The problem
Manual ticketing, nothing validated at the gate, and no way for a fan to pass a ticket to a friend without reselling it. Owners could not see which seats had sold. Several venues needed their own isolated system without paying for separate platforms.
What we built
Each venue runs in complete isolation on one codebase. Two ticket types: seat-based match tickets that map to stadium blocks, seats and price zones, and conference tickets with speaker lineups. Fans can gift a ticket, and the recipient accepts, rejects, or lets it expire.
Eight domain events with eighteen handlers push the notifications, so a purchase, a gift and a scan all fan out without the request waiting on email.
Inside the system
- Stadium seating engine with configurable blocks, seats and price zones per venue.
- QR generated with QRCoder, scanned with ZXing at the gate.
- Telr payments with HMAC-signed requests and callback verification.
- Two SignalR hubs for ticket status and auth-state sync.
- Hangfire handles reservation expiry, gift cleanup and the notification queue.
Screens