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.