Event Registration & Raffle Platform
Registration, check-in, and an on-stage raffle with broadcast overlays, with no backend to run on event day.
An all-in-one corporate event system: QR self-registration, real-time check-in, and a raffle engine with broadcast overlays for live projection.
- 11 database tables, each with row-level security policies

Team of one· Solo full-stack engineer
No team, no agency, no hand-offs. I owned this project end to end:
- Requirements
- Architecture
- UI & UX
- Database
- Infra & deployment
- Stack
- React 18SupabasePostgreSQLVercelOBS Overlays
What was broken, and what fixed it
Problem: Manual registration and ticketing at the door creates lines and duplicates.
Fix: Employees self-register by QR, are checked against the employee database, and get a unique ticket code by email. Check-in takes a camera scan, an image upload, or manual entry.
Problem: Raffle draws on stage need to look good and be fair.
Fix: Spinning wheel, slot machine, and mass draws run on rule-based eligibility, and every draw is logged. OBS overlays put animated winner announcements on the projector.
Problem: There is no time to run servers on event day.
Fix: The system is fully serverless on Supabase, and a health check and first-run setup wizard catch a missing database or broken email config before the day.
Approach
- Fully serverless on Supabase, so there is no backend to operate on event day.
- Registrations are validated against the employee database, with duplicate prevention.
- Raffle eligibility is rule-based and every draw is logged.
What it does
Registration and check-in
- QR self-registration validated against the employee database
- Unique ticket codes, email confirmations with a fallback sender, and duplicate prevention
- Mass registration for a separate event
- Check-in by camera, image upload, or manual entry, with sound feedback
Raffle and broadcast
- Spinning wheel, slot machine, mass draw, and on-the-spot draws
- Dynamic eligibility rules and a complete draw history
- OBS-ready transparent overlays and animated winner announcements
- Dashboard display mode with customizable themes
Admin and reports
- Real-time registration monitoring
- Employee management with CSV import, backup, and restore
- Multi-admin roles with an audit log
- Excel and Word exports, attendance charts, and winner statistics
Architecture
Interface
- React 18
- OBS Overlays
- Vite
Logic & APIs
- Realtime
Data
- Supabase
- PostgreSQL
- Row-level security
Infrastructure & delivery
- Vercel
- 1ReactViteVercel
React 18 and Vite front end on Vercel.
- 2RealtimeSupabasePostgreSQLRow-level security
Supabase Postgres with realtime subscriptions and row-level security.
- 3Email
A small serverless function sends confirmation email.
Engineering
- All 11 tables carry row-level security policies in Supabase, so the browser only sees what each role is allowed to.
- Admin passwords are stored as bcrypt hashes, and every admin action is written to an audit log.
- Confirmation email goes through Nodemailer with an EmailJS fallback, so a failed sender does not block a ticket.
- A health-check endpoint and a first-run setup wizard catch a missing database or broken email config before event day.
- Employee data can be backed up and restored, and CSV imports are logged with their history.
Outcome
- No backend to operate on event day.