Queue Cure '26 — Hackathon submission
Three screens, one mutex, zero refresh. Patients see live position, doctors stay on time, receptionists stop juggling paper.
Backend hosted on Render free tier. Cold starts take ~30s after 15 min of inactivity. All subsequent requests are real-time.
Next
48
~8–14 min
+1
49
~16–22 min
+2
50
~24–30 min
Based on 7 real consultations · ±30%
The system
Add patients, call next, mark absent, recall, manage queue. Live analytics. PIN-secured.
Open dashboard→
Full-screen kiosk. Toggle between full grid and compact "now serving" view from inside.
Tip: press M to switch modes
Open display→
See current patient, write notes, call next. Focused view, no queue management distractions.
Open doctor console→
Accessed via QR code on the token slip. Live position, wait estimate, sound alert when next.
Preview patient view→
How it works
01
Receptionist adds their name and phone. A QR token slip prints. Patient scans it on their phone to track their position.
02
One click advances the queue. Real consultation durations are recorded for accurate future estimates. Priority and absent patients handled cleanly.
03
TV display updates in under 200ms. Patient phones update instantly. Wait estimates adapt to real consultation patterns.
Engineering
Socket.IO with room-based broadcasting. No polling.
Rolling average of last 10 consultations. Outliers excluded. Confidence-adjusted margin.
Patient not present? Move them to the absent tray. Reinstate to front or back when they return.
async-mutex prevents race conditions on call-next, mark-done, and reinstatement.
Built with
Next.js 14
App Router
TypeScript
Strict, no any
Socket.IO
Real-time sync
Tailwind v4
CSS-native config
PostgreSQL
Persistent state
Prisma
Type-safe ORM
async-mutex
Concurrency control
Zod
Payload validation