What is this?
EventTracer is a distributed order-processing simulator that visualizes event-driven architecture in real time. It is an educational, portfolio project — not a real store. The product is the visualization itself: watching independent services choreograph a saga by reacting to events, with no central orchestrator pulling the strings.
How it works
Every action on the left is a command — an HTTP POST to the API Gateway. The browser never publishes to Kafka; intent always enters through the gateway. The Order Service persists the order and its outbound event in one database transaction (the transactional outbox), and a relay forwards it to Kafka. From there the saga choreographs itself: Payment reacts to order.created, Shipping to payment.succeeded, Refund to payment.failed, Notification to everything — each an independent, idempotent consumer. Services never call each other synchronously; a dedicated Event Monitor streams every topic back to this page over a WebSocket, keeping observability decoupled from the domain.
The tech & the demos
TypeScript and NestJS power the seven services, Apache Kafka in KRaft mode (no Zookeeper) is the log, PostgreSQL gives each service its own schema, and Next.js + Tailwind render this UI. The resilience demos are the memorable part: pause a consumer and watch lag build then drain, force a payment failure into the refund saga, poison a message into the dead-letter queue, or replay the whole log read-only — proof this is asynchronous choreography, not a disguised chain of function calls.