Queue Cure '26 — Hackathon submission

Replace paper tokens with a queue that actually moves.

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.

Live demo·PIN 1234·Clinic default
Now ServingLive
047

Next

48

~8–14 min

+1

49

~16–22 min

+2

50

~24–30 min

Based on 7 real consultations · ±30%

How it works

From paper slip to live queue

01

Patient checks in

Receptionist adds their name and phone. A QR token slip prints. Patient scans it on their phone to track their position.

02

Receptionist calls next

One click advances the queue. Real consultation durations are recorded for accurate future estimates. Priority and absent patients handled cleanly.

03

Everyone sees the same queue

TV display updates in under 200ms. Patient phones update instantly. Wait estimates adapt to real consultation patterns.

Engineering

Real problems, real solutions

Sub-200ms sync

Socket.IO with room-based broadcasting. No polling.

Wait time from real data

Rolling average of last 10 consultations. Outliers excluded. Confidence-adjusted margin.

Absent patient recovery

Patient not present? Move them to the absent tray. Reinstate to front or back when they return.

Concurrency-safe

async-mutex prevents race conditions on call-next, mark-done, and reinstatement.

Built with

Modern tools, deliberate choices

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