Ticketing
System
For the afterparty of our Maturaball (the Austrian graduation ball, which I also co-organized), I built a complete end-to-end ticketing system from scratch. No third-party platforms, no fees: just a ticket generator, a database, and a scanner app.
600 tickets at €12 each were printed and sold. On the night, every single one was validated through the system. It caught several attempts to enter with an already-scanned ticket, and the scan speed was fast enough that the bottleneck at the door was the ID check by security, not the app.
The system has two parts: a generation pipeline that ran once before the event, and a scanner app that ran on the night.
Ticket Generator
A Python script generates 600 UUIDs, renders a QR code for each one, and composites it onto the ticket design I created. The result is a print-ready PDF with 3 tickets per A4 page. Every UUID is simultaneously pushed to Supabase, initialising each ticket as valid before a single one is printed.
Scanner App
A React Native app for the door staff. Scanning a QR code hits Supabase and returns one of two states: valid (staff tap to invalidate it, marking it used with a timestamp) or already used (the app shows exactly when it was scanned). Near-zero latency. Several people who tried to re-enter with a used ticket were turned away.