The 100K Ticket
Event Platform
A modular monolith designed for high-demand onsales. Every module owns its truth. Cross-module chatter happens only through services and outbox events. This explorer is a map of that world — built from the v2 and v3 contract documents.
Start exploring
Six viewsHow to read this system
It's a modular monolith — one codebase, one database, but split into strictly bounded modules. Think of each module as a small company that only talks through contracts.
The hot path — browse → reserve → order → pay → ticket — is protected. Everything else (notifications, search indexing, reporting, analytics) happens asynchronously after the fact.
Inventory is king. No cache, no Redis, no stale read model is ever the source of truth for whether a seat is free. Only PostgreSQL rows.
Events glue modules together. When Payment captures, it doesn't call Ticketing directly. It writes to the outbox. Ticketing picks it up. Reporting picks it up. Notifications picks it up. Nobody waits.
No external calls inside DB transactions. Ever. Stripe, PayHere, Twilio — all of them are called outside open transactions. That's how 10,000 concurrent buyers don't jam the lock manager.
Version 3 adds 8 modules of detail: Tax, Promo Codes, Disputes, Seat Price Override, Customer Spend, Traffic Analytics/GA4, Audit Read, and a formal Inventory Hold verification checklist.