← All work05 / 11

2025 · Sports & events ticketing · ticketshappy.com

Happy Ticket

Match tickets with seat selection, gifting and QR entry. Built on Blazor.

  • 20,000+tickets sold · 50+ events
  • 45domain entities · 30 API controllers
  • 88permissions · 15 categories
  • 18event handlers · 8 domain events
Happy Ticket match page for Al-Hilal vs Al-Nassr
Match page: fixture, stadium and ticket entry point.

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