LiveElectric cooperative (year-end employee event)

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
Event Registration & Raffle Platform screenshot

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

  1. 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.

  2. 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.

  3. 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
  • Email
  1. 1
    ReactViteVercel

    React 18 and Vite front end on Vercel.

  2. 2
    RealtimeSupabasePostgreSQLRow-level security

    Supabase Postgres with realtime subscriptions and row-level security.

  3. 3
    Email

    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.