<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Project Flash Build</title>
    <description>The latest articles on DEV Community by Project Flash Build (@projectflashbuild).</description>
    <link>https://dev.to/projectflashbuild</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F4021449%2F3bbec48a-adb0-4be3-a37d-f76066281190.png</url>
      <title>DEV Community: Project Flash Build</title>
      <link>https://dev.to/projectflashbuild</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/projectflashbuild"/>
    <language>en</language>
    <item>
      <title>A ServiceNow-style service desk you can self-host — as WordPress plugins</title>
      <dc:creator>Project Flash Build</dc:creator>
      <pubDate>Wed, 08 Jul 2026 18:34:28 +0000</pubDate>
      <link>https://dev.to/projectflashbuild/a-servicenow-style-service-desk-you-can-self-host-as-wordpress-plugins-9c6</link>
      <guid>https://dev.to/projectflashbuild/a-servicenow-style-service-desk-you-can-self-host-as-wordpress-plugins-9c6</guid>
      <description>&lt;p&gt;If you've ever stood up a service desk, you know the shape it needs: typed records (incidents, requests, assets), fields that mean something, queues, real permissions, and rules that push work forward. ServiceNow is very good at that shape — and it also deploys and prices like the enterprise platform it is. For a team of 5–50 people, renting a second platform just to run support is a heavy tax.&lt;/p&gt;

&lt;p&gt;Here's the part that's easy to miss: that team already runs a permissioned, backed-up, CRUD platform every day. It's WordPress. What it lacks is the ITSM &lt;em&gt;shape&lt;/em&gt; — and a low-code layer is exactly how you add it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give WordPress the shape
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;WP-PFManagement&lt;/strong&gt; turns WordPress into a ServiceNow-style low-code platform. Without writing code you model &lt;strong&gt;typed entities&lt;/strong&gt; (incident, request, asset), &lt;strong&gt;fields&lt;/strong&gt; with real types, &lt;strong&gt;forms&lt;/strong&gt;, &lt;strong&gt;lists&lt;/strong&gt; and &lt;strong&gt;queues&lt;/strong&gt;, &lt;strong&gt;row- and field-level permissions&lt;/strong&gt;, and &lt;strong&gt;business rules&lt;/strong&gt; that fire on change. Wire those together and you have a working service desk — incidents with an SLA field, a triage queue, an escalation rule — living in the wp-admin your team already opens every morning.&lt;/p&gt;

&lt;p&gt;It's the ServiceNow &lt;em&gt;idea&lt;/em&gt; (model your processes as data, ship apps on top) without the ServiceNow deployment: no second platform, no separate identity provider, no per-seat enterprise contract.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "on WordPress" is the feature
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8n6z70ax7yl0ta2o8jor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8n6z70ax7yl0ta2o8jor.png" alt="Kanban board in WP-PFManagement on the same records — committed, in progress, in review, done, filter by sprint" width="799" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Because every ticket is a record in the same platform as the rest of your data, it composes with your stack instead of integrating with it:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A &lt;strong&gt;WooCommerce&lt;/strong&gt; order can open an incident directly — the order is a native event, not a connector poll.&lt;/li&gt;
&lt;li&gt;A &lt;strong&gt;visual workflow&lt;/strong&gt; (the engine that ships beside the low-code platform) can watch incidents and act: escalate, notify, or hand a host-side job to an open-source Rust worker on your own machine.&lt;/li&gt;
&lt;li&gt;Permissions are real and enforced at the row and field level — agents see their queue, contractors see only their tickets, nobody sees a field they shouldn't.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;And it's not only a service desk: the same platform now ships &lt;strong&gt;Agile project management&lt;/strong&gt; (a Kanban board and a Gantt where each task's width is its duration) on the same records, so the work and the plan live in one place.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it runs, plainly
&lt;/h2&gt;

&lt;p&gt;Everything is plugins on your own server: no external SaaS, no telemetry, your data never leaves your database. The low-code platform and the workflow engine are commercial — licensed &lt;strong&gt;per domain, not per seat, and refundable&lt;/strong&gt; — and on sale now: register, buy and self-host today, and the purchase is the trial. The AI agent that can design the whole schema from a sentence, and the Rust worker that runs host-side jobs, are open source and free.&lt;/p&gt;

&lt;p&gt;There's a worked end-to-end example — a WooCommerce order becoming a ticket, a workflow, an AI triage and a generated RMA file — at &lt;a href="https://project-flash.com/use-case" rel="noopener noreferrer"&gt;project-flash.com/use-case&lt;/a&gt;. Docs at /docs.&lt;/p&gt;

&lt;p&gt;If your team already lives in WordPress, your service desk can live there too — typed, permissioned and automated, without renting a second platform to hold it.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy to answer anything about the permission model, how incidents compose with WooCommerce and workflows, or the per-domain licensing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>itsm</category>
      <category>wordpress</category>
      <category>selfhosted</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>One WooCommerce order, five plugins: a self-hosted automation walkthrough</title>
      <dc:creator>Project Flash Build</dc:creator>
      <pubDate>Wed, 08 Jul 2026 18:16:43 +0000</pubDate>
      <link>https://dev.to/projectflashbuild/one-woocommerce-order-five-plugins-a-self-hosted-automation-walkthrough-44cd</link>
      <guid>https://dev.to/projectflashbuild/one-woocommerce-order-five-plugins-a-self-hosted-automation-walkthrough-44cd</guid>
      <description>&lt;p&gt;Let me trace a single event through a WordPress site that runs Project Flash — one WooCommerce order, all the way to a file generated on the company's own machine — because the interesting part isn't any one plugin, it's that the whole thing happens inside the site's own WordPress, with the data never leaving it.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. The order (WooCommerce)
&lt;/h2&gt;

&lt;p&gt;A customer buys a product. That's a native WordPress event — no connector polling "new order" from a cloud. Everything downstream hears it directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. It becomes a ticket (WP-PFManagement)
&lt;/h2&gt;

&lt;p&gt;The order opens an &lt;strong&gt;incident&lt;/strong&gt; in a ServiceNow-style low-code platform: a typed record with fields that mean something (impact, status, the linked order, the customer). It lands in a real service desk — a queue with row- and field-level permissions — not a spreadsheet. Agents see their tickets; nobody sees fields they shouldn't.&lt;/p&gt;

&lt;p&gt;This is the low-code layer: entities, forms, business rules, all modelled without writing code, running in the same wp-admin the team already uses.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. A workflow reacts (WP-PFWorkflow)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5ugxfibkka0xgbjvd75.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5ugxfibkka0xgbjvd75.png" alt="The workflow on a real canvas — triggers, branches, functions, error boundaries" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The new incident is an event, and a &lt;strong&gt;visual workflow&lt;/strong&gt; is listening. On a real canvas — triggers, conditional branches, function calls, error boundaries — the workflow decides what happens: check the order, branch on product and customer, and if the situation calls for it, ask for help.&lt;/p&gt;

&lt;p&gt;Because it's a graph and not a linear recipe, the awkward cases (an API is down, the product is out of policy) are just other edges you drew, not walls you hit.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The AI agent triages (WP-PFAgent)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4kj6jz4tma0zth6mo6l.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fd4kj6jz4tma0zth6mo6l.png" alt="The AI agent triaging the ticket" width="799" height="558"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;For the judgment call, the workflow hands off to the &lt;strong&gt;AI agent&lt;/strong&gt; (open source, bring-your-own-LLM-keys). It reads the ticket and the order, classifies the issue, and proposes the next step against the platform's documented schema — and it asks for confirmation before it writes anything. It's leverage, not a black box: what it produces are real records you can inspect.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The work leaves PHP (wp-executor)
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qu64wukn95scpnsgmsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qu64wukn95scpnsgmsh.png" alt="wp-executor running the host-side job on your own machine" width="799" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The resolution needs a file generated on the company's own machine — an RMA document, say. WordPress can't (and shouldn't) do that inside a web request, so it publishes a job to a queue. A single-binary &lt;strong&gt;Rust worker&lt;/strong&gt; running on the company's own hardware leases the job, runs it under a local allowlist, generates the file, and reports back. Nothing transited a third party; the worker only ever talked to this WordPress.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Resolution
&lt;/h2&gt;

&lt;p&gt;The generated file attaches to the ticket, a business rule closes the loop, and the customer gets their answer. One event, five plugins, one database — the customer's own.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why do it this way
&lt;/h2&gt;

&lt;p&gt;Every step above ran as a plugin inside the site's own WordPress. No external SaaS in the path, no per-task billing, no telemetry — the order, the ticket, the workflow state, the AI's output and the executor's result all live in one database the business owns.&lt;/p&gt;

&lt;p&gt;Two of the five are open source and free (the AI agent, GPL-2.0; the Rust worker, MIT/Apache-2.0). The workflow engine and the low-code platform are commercial — licensed per domain, not per task, and refundable — and on sale now: register, buy and self-host today.&lt;/p&gt;

&lt;p&gt;See the whole thing as real screenshots at &lt;a href="https://project-flash.com/use-case" rel="noopener noreferrer"&gt;project-flash.com/use-case&lt;/a&gt;. Docs at /docs.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy to answer anything about any hop in the chain — the data model, the workflow graph, the REST+HMAC queue, or the executor's allowlist.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>automation</category>
      <category>opensource</category>
      <category>tutorial</category>
    </item>
    <item>
      <title>An AI agent that designs your schema or workflow from a sentence — with your own LLM keys, inside WordPress</title>
      <dc:creator>Project Flash Build</dc:creator>
      <pubDate>Wed, 08 Jul 2026 16:26:03 +0000</pubDate>
      <link>https://dev.to/projectflashbuild/an-ai-agent-that-designs-your-schema-or-workflow-from-a-sentence-with-your-own-llm-keys-inside-2bnb</link>
      <guid>https://dev.to/projectflashbuild/an-ai-agent-that-designs-your-schema-or-workflow-from-a-sentence-with-your-own-llm-keys-inside-2bnb</guid>
      <description>&lt;p&gt;Most "AI in your app" turns out to be a chat box bolted onto a product, answering questions about it. We wanted the opposite: an agent that &lt;em&gt;builds the product&lt;/em&gt; — that takes a sentence and produces the actual structured artifacts your platform runs on.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WP-PFAgent&lt;/strong&gt; is that layer, and it's open source (GPL-2.0). You describe what you need in plain language — "a service desk with incidents, an SLA field, and a rule that escalates anything open over 24 hours" — and the agent designs it against documented schemas: entities, fields, forms, business rules, and workflow graphs. Not a mockup. The real definitions the low-code platform and the workflow engine execute.&lt;/p&gt;

&lt;h2&gt;
  
  
  It writes to the same primitives you would
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5ugxfibkka0xgbjvd75.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fz5ugxfibkka0xgbjvd75.png" alt="The workflow graph the agent can design and the engine executes" width="800" height="355"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The reason this works is that the platform underneath is already structured. WP-PFManagement models everything as typed entities, fields, permissions and rules; WP-PFWorkflow models automations as graphs of triggers, branches and functions. Those are documented, machine-legible primitives — so "turn a sentence into an app" is really "turn a sentence into the same objects a human would click together," and then you review and adjust them like anything else.&lt;/p&gt;

&lt;p&gt;That means the agent isn't a black box that generates opaque output. It produces entities you can open, rules you can read, workflow nodes you can rewire. If it gets something 90% right, you fix the 10% by hand — you were going to own these definitions anyway.&lt;/p&gt;

&lt;h2&gt;
  
  
  Bring your own keys, any provider
&lt;/h2&gt;

&lt;p&gt;The agent is &lt;strong&gt;bring-your-own-keys&lt;/strong&gt;. You point it at your own LLM provider — OpenAI, Anthropic, Gemini, DeepSeek, Qwen, whatever you already pay for — and it uses that. Nothing routes through us. It works fine with cheap models; you're generating structured definitions against a schema, not writing novels. And because it's GPL and free, the suite is fully usable without it — the agent is leverage, not a lock-in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Confirmation before it acts
&lt;/h2&gt;

&lt;p&gt;An agent that can create entities and rules needs guardrails, so it has one: it &lt;strong&gt;asks for confirmation before any write or send&lt;/strong&gt;. You see what it's about to create or change, and you approve it. The agent proposes; you commit. That keeps "designs your schema from a sentence" from turning into "silently rewired your production data model."&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it runs, plainly
&lt;/h2&gt;

&lt;p&gt;Like the rest of the suite, it's a plugin inside your own WordPress — no external SaaS, no telemetry, your data stays in your database, and the only outbound call is to the LLM provider &lt;em&gt;you&lt;/em&gt; configured. The commercial pieces (the low-code platform and the workflow engine the agent designs for) are licensed per domain, refundable, and on sale now — register, buy and self-host today. The agent itself and the Rust executor are open source and free.&lt;/p&gt;

&lt;p&gt;There's a worked end-to-end example — a WooCommerce order becoming a ticket, a workflow, an AI triage and a generated RMA file — at &lt;a href="https://project-flash.com/use-case" rel="noopener noreferrer"&gt;project-flash.com/use-case&lt;/a&gt;. Docs at /docs.&lt;/p&gt;

&lt;p&gt;Describe the app; review what it built; ship it — on your own server, with your own keys.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy to answer anything about the schema the agent targets, the confirmation model, or bring-your-own-keys.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>wordpress</category>
      <category>opensource</category>
      <category>lowcode</category>
    </item>
    <item>
      <title>Your automation engine as WordPress plugins — a self-hosted alternative to Zapier and Make</title>
      <dc:creator>Project Flash Build</dc:creator>
      <pubDate>Wed, 08 Jul 2026 16:24:20 +0000</pubDate>
      <link>https://dev.to/projectflashbuild/your-automation-engine-as-wordpress-plugins-a-self-hosted-alternative-to-zapier-and-make-1a53</link>
      <guid>https://dev.to/projectflashbuild/your-automation-engine-as-wordpress-plugins-a-self-hosted-alternative-to-zapier-and-make-1a53</guid>
      <description>&lt;p&gt;Per-task pricing is a tax on success. The more your automations actually run, the more you pay — and every task carries your orders, your forms and your customers through somebody else's cloud on the way. For a business that already runs on WordPress, that's a strange arrangement: you self-host everything that matters, then rent the automation layer forever and hand it your data as rent.&lt;/p&gt;

&lt;p&gt;We built the other option, and it's plugins inside your own WordPress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WP-PFWorkflow&lt;/strong&gt; is a visual workflow engine. Not a recipe list — a real canvas. Triggers, conditional branches, function calls and error boundaries are first-class elements you wire together, the way you'd expect from a proper automation tool. Workflows react to events that already exist across your site — a WooCommerce order, a submitted form, a changed record — and run where those events live, without a round trip to an external service.&lt;/p&gt;

&lt;h2&gt;
  
  
  A canvas, not a wizard
&lt;/h2&gt;

&lt;p&gt;The difference shows up the moment your automation stops being a straight line. Real processes branch: &lt;em&gt;if the order is over €500 and the customer is new, route to manual review; otherwise auto-approve.&lt;/em&gt; They fail: an API is down, a file is missing, a downstream call times out. On a recipe-style tool, that's where you hit a wall. On a canvas with conditional branches and &lt;strong&gt;error boundaries&lt;/strong&gt;, a failure is just another edge you drew — you decide what happens next, and the graph keeps its shape.&lt;/p&gt;

&lt;p&gt;Because the engine lives inside WordPress, its triggers are the events you already have. No polling an external connector for "new order" — the order &lt;em&gt;is&lt;/em&gt; a native event, and the workflow hears it directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  When the work has to leave PHP
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qu64wukn95scpnsgmsh.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F5qu64wukn95scpnsgmsh.png" alt="wp-executor running host-side jobs your WordPress published" width="799" height="340"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Some steps don't belong in a web request: run a shell script, move a file, call a service that only exists on your LAN. For those, the engine hands work to &lt;strong&gt;wp-executor&lt;/strong&gt; — a single-binary worker (open source, Rust) that polls your WordPress over REST, leases the job, and runs it &lt;strong&gt;on your own machine, in your own tools&lt;/strong&gt;, under an allowlist you control. WordPress stays the control plane; your hardware stays the data plane; nothing transits a third party.&lt;/p&gt;

&lt;p&gt;So the reach isn't limited to what a SaaS connector catalog offers. It's whatever your own environment can do — because the thing executing it is a process you installed, on a box you own.&lt;/p&gt;

&lt;h2&gt;
  
  
  The honest comparison
&lt;/h2&gt;

&lt;p&gt;We're not competing on connector count. Zapier and Make have thousands of cloud connectors; if your automation is "SaaS A → SaaS B," they're built for that. Our bet is &lt;strong&gt;depth inside WordPress plus reach into your own machine&lt;/strong&gt;: the engine sits where your business data already is, and the executor extends it into your own infrastructure. Against Uncanny Automator's WP↔WP recipes, the difference is a real graph engine (branches, functions, error boundaries) instead of linear recipes. And "no SaaS" is literal here: no external runtime, no telemetry, licensing &lt;strong&gt;per domain, not per task&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it runs, plainly
&lt;/h2&gt;

&lt;p&gt;Everything is plugins on your own server. Your data never leaves your database. The workflow engine (and the low-code platform beside it) are commercial, licensed per domain and &lt;strong&gt;refundable&lt;/strong&gt; — on sale now, so you can register, buy and self-host today, and the purchase is the trial. The AI agent that can design a whole workflow from a sentence, and the Rust executor, are open source and free.&lt;/p&gt;

&lt;p&gt;There's a worked end-to-end example — a WooCommerce order becoming a ticket, a workflow, an AI triage and an executor-generated RMA file — at &lt;a href="https://project-flash.com/use-case" rel="noopener noreferrer"&gt;project-flash.com/use-case&lt;/a&gt;. Docs at /docs.&lt;/p&gt;

&lt;p&gt;If your automations are earning their keep, they shouldn't cost more every time they succeed — and they shouldn't ship your data to a cloud you don't own. They can run where your business already does.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy to answer anything about the branch/error-boundary model, the REST+HMAC contract to the executor, or the per-domain licensing.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>automation</category>
      <category>opensource</category>
      <category>selfhosted</category>
    </item>
    <item>
      <title>A Gantt where the bar's width IS the task's duration — built into WordPress, on live records</title>
      <dc:creator>Project Flash Build</dc:creator>
      <pubDate>Wed, 08 Jul 2026 16:08:56 +0000</pubDate>
      <link>https://dev.to/projectflashbuild/a-gantt-where-the-bars-width-is-the-tasks-duration-built-into-wordpress-on-live-records-4o9n</link>
      <guid>https://dev.to/projectflashbuild/a-gantt-where-the-bars-width-is-the-tasks-duration-built-into-wordpress-on-live-records-4o9n</guid>
      <description>&lt;p&gt;Most project tools keep your plan in one silo and the work in another. The Gantt lives in Jira or Asana; the tickets, the customers, the orders live somewhere else; and you spend your week keeping the two in sync by hand. Automation tools don't fix this — Zapier and Make move data between apps, but they have no data model and no notion of a plan. Nobody owns the place where &lt;em&gt;planning&lt;/em&gt; and &lt;em&gt;doing&lt;/em&gt; are the same thing.&lt;/p&gt;

&lt;p&gt;We just shipped the opposite bet, and it runs entirely inside your own WordPress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;WP-PFManagement&lt;/strong&gt; is a ServiceNow-style low-code platform — you model entities, fields, forms, lists, permissions and business rules, and ship real apps (ITSM, CRM, a service desk) without writing code. As of this week it also does &lt;strong&gt;Agile project management&lt;/strong&gt; as a first-class citizen. Not a plugin bolted on the side: the plan is made of the same records as everything else you run.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Gantt: width = duration
&lt;/h2&gt;

&lt;p&gt;Open the planning canvas and every task is a bar. &lt;strong&gt;The bar's width is the task's duration&lt;/strong&gt; — drag the right edge and you're changing the estimate, not a label. You draw &lt;strong&gt;typed dependencies&lt;/strong&gt; between bars (finish-to-start and friends), drop &lt;strong&gt;milestones&lt;/strong&gt; on the timeline, and &lt;strong&gt;right-click to connect&lt;/strong&gt; two tasks the way you'd wire nodes on a canvas. Move a task and its dependents &lt;strong&gt;cascade&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;If you've used a Gantt before, none of that is new. Here's what is: the bars, the dependencies and the milestones aren't chart decorations rendered from some hidden project file. &lt;strong&gt;They are records&lt;/strong&gt; — rows in the same low-code platform your tickets and business rules already live in. The chart is just a view over data you can query, permission, and automate.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Kanban board on the same data
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8n6z70ax7yl0ta2o8jor.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2F8n6z70ax7yl0ta2o8jor.png" alt="The Kanban board in WP-PFManagement — drag work across committed, in progress, in review, done; filter by sprint" width="799" height="529"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The same records show up on a &lt;strong&gt;Kanban board&lt;/strong&gt;: drag a card across &lt;em&gt;committed → in progress → in review → done&lt;/em&gt;, filter by sprint. Move a card and the underlying record updates — there's no separate project tool holding a second copy of the truth. The Gantt and the board are two windows onto one dataset.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why "records" is the whole point
&lt;/h2&gt;

&lt;p&gt;Because the plan is data, your automations can act on it.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Shift a milestone and a &lt;strong&gt;workflow&lt;/strong&gt; can fire — notify the stakeholders, reprice the engagement, open a risk ticket.&lt;/li&gt;
&lt;li&gt;Move a card to &lt;em&gt;done&lt;/em&gt; and a business rule can close the linked incident, log the hours, or kick off the next task.&lt;/li&gt;
&lt;li&gt;A task bar is a record, so it obeys the same &lt;strong&gt;row- and field-level permissions&lt;/strong&gt; as the rest of your data. Contractors see their tasks; nobody sees the budget field.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That closure — &lt;strong&gt;plan and automate on the same records, self-hosted&lt;/strong&gt; — is the thing the automation-only tools structurally can't do (no data model) and the dedicated PM tools won't do (your plan is in their cloud, not next to your systems). WordPress stays the place where your business already runs; the planning layer just makes the plan part of it.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it runs, plainly
&lt;/h2&gt;

&lt;p&gt;Everything is plugins inside your own WordPress. No external SaaS, no per-task pricing, no telemetry — your data never leaves your database. The low-code platform (and the workflow engine next to it) are commercial, licensed &lt;strong&gt;per domain, not per task, and refundable&lt;/strong&gt;; they're on sale now, so you can register, buy and self-host today, and the purchase is the trial. The AI agent that can design a schema or a workflow from a sentence, and the single-binary Rust worker that runs host-side jobs, are both open source and free.&lt;/p&gt;

&lt;p&gt;There's a worked end-to-end example — a WooCommerce order becoming a ticket, a workflow, an AI triage and a generated RMA file — at &lt;a href="https://project-flash.com/use-case" rel="noopener noreferrer"&gt;project-flash.com/use-case&lt;/a&gt;. Docs at /docs.&lt;/p&gt;

&lt;p&gt;If you already live in WordPress, your next project plan doesn't have to move to somebody else's cloud to be a real Gantt. It can be data — right where the work is.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Happy to answer anything about the data model, the dependency/cascade semantics, or how the planning records hook into workflows.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>productivity</category>
      <category>agile</category>
      <category>opensource</category>
    </item>
    <item>
      <title>A single-binary Rust worker that drains WordPress job queues</title>
      <dc:creator>Project Flash Build</dc:creator>
      <pubDate>Wed, 08 Jul 2026 14:16:41 +0000</pubDate>
      <link>https://dev.to/projectflashbuild/a-single-binary-rust-worker-that-drains-wordpress-job-queues-1da0</link>
      <guid>https://dev.to/projectflashbuild/a-single-binary-rust-worker-that-drains-wordpress-job-queues-1da0</guid>
      <description>&lt;p&gt;WordPress is a fine place to &lt;em&gt;decide&lt;/em&gt; that work needs to happen and a terrible place to &lt;em&gt;do&lt;/em&gt; heavy work.&lt;br&gt;
Everything you run inside a request competes with your visitors; everything you run in WP-Cron competes&lt;br&gt;
with luck. When our workflow engine needed to run shell commands, move files around and call LAN-only&lt;br&gt;
APIs, we refused to do any of that inside the PHP request lifecycle — and we didn't want a SaaS in the&lt;br&gt;
middle either. So we wrote &lt;strong&gt;wp-executor&lt;/strong&gt;: a single-binary worker in Rust that polls a WordPress site&lt;br&gt;
for jobs and runs them on your own machine, in your own tools. It's open source (MIT OR Apache-2.0):&lt;br&gt;
&lt;a href="https://github.com/Project-Flash-Build/wp-executor" rel="noopener noreferrer"&gt;https://github.com/Project-Flash-Build/wp-executor&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FProject-Flash-Build%2Fwp-executor%2Fmain%2Fassets%2Fcross-plugin-architecture.svg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fraw.githubusercontent.com%2FProject-Flash-Build%2Fwp-executor%2Fmain%2Fassets%2Fcross-plugin-architecture.svg" alt="Project Flash cross-plugin architecture — WordPress publishes a REST job queue that the wp-executor worker drains" width="1200" height="680"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  The shape of the problem
&lt;/h2&gt;

&lt;p&gt;The WordPress side (a workflow engine we build commercially) models automations as graphs. Most steps run&lt;br&gt;
happily in PHP. But some steps are &lt;em&gt;host-side&lt;/em&gt; by nature: run a script, read or write a file, hit an&lt;br&gt;
internal service the web server can't reach. Those need an execution boundary that is not the WordPress&lt;br&gt;
process — different machine, different privileges, different failure domain.&lt;/p&gt;

&lt;p&gt;The classic answers are all unsatisfying:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;WP-Cron / PHP daemon:&lt;/strong&gt; still the same machine, same PHP, same privileges — no boundary at all.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A SaaS runner:&lt;/strong&gt; now your shell commands, file paths and internal endpoints live in someone's cloud.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A message broker (RabbitMQ, Redis):&lt;/strong&gt; real infrastructure — but now every WordPress install needs a
broker, and most sites will never justify one.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We picked the boring fourth option: &lt;strong&gt;WordPress itself is the queue.&lt;/strong&gt; The site already has a database, a&lt;br&gt;
REST API and an authentication story. The engine writes jobs to a table; a REST surface exposes&lt;br&gt;
poll/lease/complete; anything that can speak HTTPS can be a worker.&lt;/p&gt;

&lt;h2&gt;
  
  
  The protocol: poll, lease, execute, report
&lt;/h2&gt;

&lt;p&gt;The worker's loop is deliberately dull:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;code&gt;GET&lt;/code&gt; the versioned &lt;strong&gt;contract&lt;/strong&gt; document on startup — which capabilities the server expects, queue
endpoints, signing requirements. The binary treats the server's contract as the source of truth, so a
server upgrade doesn't require a worker rebuild unless the capability set itself changes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Poll&lt;/strong&gt; the queue endpoint on its own cadence (long-poll-ish, configurable interval).&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Lease&lt;/strong&gt; a job. Leases expire: if a worker dies mid-job, the job returns to the queue instead of
vanishing. Idempotency keys keep a retried job from running twice.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Execute&lt;/strong&gt; the job's capability locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Report&lt;/strong&gt; a uniform result: &lt;code&gt;{ exit_code, stdout, stderr, output, duration_ms, error }&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Authentication is a per-worker bearer token, plus (by default) an &lt;code&gt;X-PFW-Signature&lt;/code&gt; HMAC-SHA256 of the&lt;br&gt;
request body, so a leaked TLS termination point still can't forge job results.&lt;/p&gt;

&lt;h2&gt;
  
  
  Capabilities, not arbitrary code
&lt;/h2&gt;

&lt;p&gt;The worker refuses to be a remote shell. It implements exactly six typed capabilities — &lt;code&gt;shell.run&lt;/code&gt;,&lt;br&gt;
&lt;code&gt;fs.read&lt;/code&gt;, &lt;code&gt;fs.write&lt;/code&gt;, &lt;code&gt;fs.list&lt;/code&gt;, &lt;code&gt;http.request&lt;/code&gt;, &lt;code&gt;system.info&lt;/code&gt; — and every one of them is gated by an&lt;br&gt;
&lt;strong&gt;allowlist in the worker's own config&lt;/strong&gt;. The server side keeps a per-worker allowlist too; a job runs&lt;br&gt;
only if &lt;em&gt;both&lt;/em&gt; agree. A compromised WordPress can't suddenly make your build machine exfiltrate files it&lt;br&gt;
was never allowed to touch: the worker-side allowlist is enforced before execution, on hardware the&lt;br&gt;
WordPress admin doesn't control.&lt;/p&gt;

&lt;p&gt;Every capability carries a hard timeout and returns the same result envelope, which makes the workflow&lt;br&gt;
side pleasantly uniform: a shell script that exits 3 and an HTTP call that returns 503 look structurally&lt;br&gt;
identical to the graph.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Rust (the honest version)
&lt;/h2&gt;

&lt;p&gt;Not for speed — the worker spends its life waiting on I/O. The actual reasons:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Single static binary.&lt;/strong&gt; The install story on a random VPS, a Mac mini or a Windows box is "download,
unzip, run". No PHP version matrix, no pip, no node_modules. &lt;code&gt;rustls&lt;/code&gt; means not even an OpenSSL
dependency.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;A type system for the contract.&lt;/strong&gt; Job payloads, capability schemas and result envelopes are typed
end to end. Deserialization failures are loud and early.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Predictable long-running behaviour.&lt;/strong&gt; A worker is a daemon; daemons written in scripting languages
accumulate weird state. Ownership makes the "runs for six months" case boring.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Cross-compilation.&lt;/strong&gt; Linux x86_64, macOS x86_64/aarch64 and Windows from one codebase, in CI.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The test story mattered too: the integration suite runs the whole worker loop against&lt;br&gt;
&lt;a href="https://crates.io/crates/wiremock" rel="noopener noreferrer"&gt;&lt;code&gt;wiremock&lt;/code&gt;&lt;/a&gt; standing in for WordPress, so &lt;code&gt;cargo test&lt;/code&gt; needs no&lt;br&gt;
WordPress at all.&lt;/p&gt;

&lt;h2&gt;
  
  
  Running it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;wp-executor &lt;span class="nt"&gt;--base-url&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;https://your-site.tld &lt;span class="nt"&gt;--token&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;pfw_worker_1_xxx probe
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A successful &lt;code&gt;probe&lt;/code&gt; prints the upstream contract and exits 0. Install scripts ship for systemd, launchd&lt;br&gt;
and Windows services; config is one TOML file (&lt;code&gt;base_url&lt;/code&gt;, &lt;code&gt;bearer_token&lt;/code&gt;, and optionally the allowlist,&lt;br&gt;
poll interval, lease TTL, signing toggle).&lt;/p&gt;

&lt;h2&gt;
  
  
  What this buys you
&lt;/h2&gt;

&lt;p&gt;A WordPress workflow can now say "run this backup script on the office NAS", "transcode this upload on&lt;br&gt;
the GPU box", "call the ERP that only exists on the LAN" — and the thing that executes it is a process&lt;br&gt;
&lt;em&gt;you&lt;/em&gt; installed, on a machine &lt;em&gt;you&lt;/em&gt; own, under an allowlist &lt;em&gt;you&lt;/em&gt; wrote. WordPress stays the control&lt;br&gt;
plane; your hardware stays the data plane; nothing transits a third party.&lt;/p&gt;

&lt;p&gt;The worker is MIT/Apache-2.0 and needs no license to run. The WordPress side that publishes the queue is&lt;br&gt;
our commercial workflow engine (that's the business model, stated plainly); its wire contract is public&lt;br&gt;
REST and the worker consumes it as documentation. If you want to see the full picture there's a worked&lt;br&gt;
example — a WooCommerce order turning into a ticket, a workflow, an AI triage and an executor-generated&lt;br&gt;
RMA file — at &lt;a href="https://project-flash.com/use-case" rel="noopener noreferrer"&gt;https://project-flash.com/use-case&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Questions about the lease semantics, the allowlist model or the Rust internals are welcome — the code is&lt;br&gt;
all in the repo.&lt;/em&gt;&lt;/p&gt;

</description>
      <category>rust</category>
      <category>wordpress</category>
      <category>opensource</category>
      <category>architecture</category>
    </item>
  </channel>
</rss>
