A 98KB Workflow Engine Makes Sense When You Only Need Approvals, Not a BPM Platform
Most teams asking "what should I use for approvals?" default to Flowable without calculating the hidden tax: 70+ foreign tables in their schema, a BPMN 2.0 learning curve for every new hire, and upgrade paralysis. A bounded, 98KB engine with 8 tables and no framework dependency offers a genuine alternative when the requirement is approval, not a full BPM platform.
Flowable, Activiti, and Camunda are built for complex BPM platforms, not for embedding a simple approval module inside a business application. Their cost shows up as dozens of engine-owned tables, framework coupling, a long BPMN learning ramp, and upgrade trauma that leads teams to freeze versions permanently. When process patterns are fixed—initiate, approve, reject, jump, countersign, delegate—a 98KB zero-dependency engine with 8 tables and a flat JSON-based process definition becomes the more rational trade-off.
The calculus isn't about saving effort; it's about swapping one cost structure for another. A self-built engine shifts the burden from learning someone else's sprawling specification to maintaining your own bounded complexity. That trade only pays off when the latter is genuinely smaller.
jeeflow, extracted from the mldong rapid development framework, embodies this bet: DDD aggregate roots, a 6+5 SPI extension system, and isomorphic implementations across Java, Go, Python, and Node. It doesn't try to be a BPM platform—it stays an approval engine that integrates deeply with whatever framework already exists.
The weekly recurrence of the same approval-engine question in backend groups suggests a persistent gap between what teams actually need and what the default answer prescribes.
Framing the choice as a cost-structure swap rather than a build-vs-buy decision is more honest: both paths carry maintenance burdens, just in different places.
Version-freeze as an unspoken industry norm for BPM engines signals that upgrade friction is a real operational cost, not just a theoretical concern.
Shipping the same engine in four languages from the start is an unusual design choice that targets polyglot organizations directly, rather than treating non-Java runtimes as an afterthought.
The practical value of defining clear use-case boundaries resonated, while a concrete need emerged for lowering the barrier to entry: an online demo and a flowchart designer accessible to non-technical users.
It would be best to have an online demo site, and a way for people who don't know much about workflows to draw flowcharts