Jeeflow: A 98KB Workflow Engine That Runs the Same Process in Java, Go, Python, and Node
Most workflow engines force a heavy framework dependency and lock you into one language stack. Jeeflow shows an alternative path: a spec-first, polyglot engine where the process definition is the portable artifact and each language gets a native implementation, not a binding. Teams that run mixed stacks can share workflow logic without sharing a runtime.
Jeeflow began as the built-in workflow module inside the mldong Java framework, a lightweight alternative to heavyweight engines like Flowable. It was extracted into a standalone 98KB core with zero framework dependencies and six pluggable SPIs for storage, identity, JSON parsing, expression evaluation, ID generation, and transactions. The engine models process instances and tasks as a DDD rich domain model with an explicit state machine.
That independence solved coupling and upgrade pain, but left non-Java teams behind. The answer is a multi-language federation: four native implementations in Java, Go, Python, and Node.js, all governed by a single specification document and verified against ten shared process-definition JSONs. A unified Vue3 frontend connects to any backend.
Every change follows a strict spec-first, cross-verification discipline. The same expense-report process produces identical results across all four language demos, and no code is committed without passing positive, negative, and regression tests.
Extracting a workflow engine from a framework and making the framework its first consumer, rather than its host, inverts the usual dependency direction and gives the engine an independent release cadence.
Four independent implementations aligned to a spec is a harder coordination problem than one engine with language bindings, but it avoids lowest-common-denominator API design and lets each implementation feel native.
A 98KB core with pluggable SPIs is a deliberate rejection of the "enterprise engine" model where the engine dictates the database schema, ORM, and deployment topology.
Using shared process-definition JSONs as a cross-language test suite turns the spec into an executable contract, not just a document.