A subscription lifecycle saga — order → payment → fulfillment — orchestrated by Temporal and triggered via Kafka domain events. Built with Spring Boot 4 + Spring Modulith (four enforced module boundaries in one JVM). Each button makes a single REST call — step through the saga manually to watch each state transition in real time.
1 Create Order
Saga starts in AWAITING_PAYMENT once the Kafka consumer picks up order.created
2 Trigger Payment
Create an order first — the orderId will appear above these buttons
3 Fulfillment
Triggered automatically after payment confirmation — FulfillmentConsumer listens to payment.processed on Kafka, saves the record, then signals fulfillmentDone to Temporal. No manual step needed.
⇄ Idempotency Demo
Check the console for both response status codes

Live Saga List

No sagas yet — start with Step 1.