Event Management Platform
Ticketing and live check-in for high-traffic events
4 months to launch
- Ticket validation
- Offline-tolerant
- Check-in visibility
- Real-time
- Duplicate entries
- Zero, by design
Overview
Paper ticket lists and manual check-in created long entry lines and gave organizers no real-time visibility into attendance. Built a ticketing and check-in system designed for spotty connectivity at the door and zero tolerance for duplicate entries.
The Problem
Manual, paper-based check-in produced long entry lines and left organizers with no live view of attendance — only an end-of-day headcount, well after decisions about staffing or capacity needed to be made.
Architecture
A Next.js admin and attendee-facing app pairs with a NestJS API. Tickets are signed QR payloads that scanning devices validate locally first, then reconcile against the server. A WebSocket-driven dashboard gives organizers a live view of check-ins as they happen.
Challenges and solutions
Challenges
- Validating tickets reliably at high-traffic entry gates with unreliable network connectivity
- Preventing duplicate or fraudulent ticket use when multiple scanning devices operate concurrently
Solutions
- Signed QR payloads let scanning devices validate offline first, then reconcile with the server — entry doesn't stall on a network blip
- A single-use ticket state machine with idempotent check-in calls made concurrent scans from multiple devices safe by construction
Performance Improvements
- Reduced entry-line wait times versus manual list check-in
- Gave organizers a real-time attendance dashboard instead of an end-of-day count
Business Impact
Organizers gained live attendance visibility during the event itself, enabling in-the-moment staffing and capacity decisions instead of after-the-fact reporting.
Lessons Learned
Idempotency at the state-machine level is non-negotiable wherever multiple devices might act on the same record concurrently — this is a correctness problem, not a performance one.
Stack
- Next.js
- NestJS
- PostgreSQL
- WebSockets
- AWS