finds.dev← search

// the find

berndruecker/flowing-retail

★ 1,330 · Java · Apache-2.0 · updated Aug 2024

Sample application demonstrating an order fulfillment system decomposed into multiple independant components (e.g. microservices). Showing concrete implementation alternatives using e.g. Java, Spring Boot, Apache Kafka, Camunda, Zeebe, ...

A sample order-fulfillment app split into microservices, built to accompany Bernd Rücker's process automation book/talks. It shows the same order-checkout-payment-shipping flow implemented multiple ways: REST, Kafka choreography, and Zeebe/Camunda 8 orchestration, so it's for developers trying to understand event-driven architecture and workflow engines side by side rather than for reuse in a real product.

The parallel-implementation structure is the actual value here — you can diff the same business process across REST-with-stateful-retries, Kafka pub/sub, and Zeebe orchestration and see the tradeoffs directly in code instead of in a slide deck. Each service is a real, runnable Spring Boot app with its own Dockerfile, so you can spin up the whole system and watch messages flow rather than just read pseudocode. The monitor service with a live BPMN/websocket view is a genuinely useful way to visualize choreography that's otherwise invisible.

The author states outright the code isn't meant to be production style, and it shows: no tests, no docker-compose to wire the pieces together at the top level, and env config scattered as bare application.properties files per service. It's tied to Camunda 8/Zeebe, so if you don't already care about that ecosystem, half the repo's reason for existing doesn't apply to you. Last pushed mid-2024 with no CI, so it's not verified against current Camunda 8 or Kafka client versions — expect some drift if you actually try to run it today.

View on GitHub →

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →