Contract Pack Explorer
Domain API Contract Pack · v3.0

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.

16
Modules
+2 new in v3
44
Domain Objects
+6 new in v3
29
Outbox Events
+9 new in v3
112+
Endpoints
across modules
Strict module boundaries
No module reads or writes another's tables. Ever. Cross-module work flows through services and events.
Idempotent buy path
Same Idempotency-Key + same actor + same body = same answer. Retries never double-book.
Server-controlled expiry
5-min reservation TTL. 10-min admission token. 14-day webhook dedup. No client overrides.

Start exploring

Six views
Architecture primer

How 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.