Problem
Paper tickets, hardware, and manual coordination. Guests don't know when to head to the exit; valets get overloaded. For pop-up valet setups, existing systems are too heavy and expensive.
What I Built
Shareable guest links (QR or SMS) so guests can request a car now or schedule for a time. Valets use a simple console to update status. Managers seed data, create tickets, run the scheduler, and send notifications. Full flow runs locally or deployed.
Architecture
Stack and flow: Next.js (Vercel), Flask API (Render), Postgres (Supabase/Neon), SQLAlchemy + Alembic, JWT for valet/manager auth.
- Frontend: Next.js, server components, API routes
- Backend: Flask, SQLAlchemy models, SSE (EventSource) for live guest status
- DB: Postgres, migrations via Alembic
- Auth: JWT for valet/manager consoles
- Deploy: Vercel (frontend), Render/Fly/Railway (API), env-driven config
Results
Stack
Flask, Next.js, Postgres
Real-time
SSE, live guest updates
Scheduling
Timed pickup
Demo runs locally; full lifecycle from ticket creation to guest request, valet status updates, and completion. Scheduler supports timed requests via manager ticks.
Request Queue (Live)
Key Insights
Why ticketless
Link is the ticket. No printers, paper, or scanners. Less setup for pop-up valet; guests get one place to check status.
Scheduling
Request in X minutes lines up retrieval with walk time. Less curb congestion and more even valet load.