Queue Cure — Real-Time Clinic Queue Management System
Reduced patient wait uncertainty with live token tracking, doctor status sync, and auto-calculated wait indicators across 2 synchronized dashboards via WebSocke
2
Dashboards synced in real-time
<100ms
Socket.IO event latency
100%
Accessibility compliance (ARIA, keyboard
Overview
Small and mid-sized clinics rely on manual token systems — paper slips, verbal calls, or whiteboard numbers — that leave patients anxious, uninformed, and frustrated. There is no real-time visibility: patients don't know how many people are ahead of them, how long the wait is, or whether the doctor is even available. Receptionists handle this with repetitive manual updates and repeated patient enquiries. This creates a chaotic, inefficient experience on both sides of the desk — wasted time, poor communication, and zero measurable throughput. Queue Cure was built to solve this with a fully sync Process I started by mapping the core pain points: the receptionist needs to register, manage, and call patients — the waiting room needs to display live queue state without manual refresh. I chose Socket.IO for real-time bidirectional sync over HTTP polling. I architected a dual-dashboard model — one React route for the Receptionist Desk, another for the Patient Display — both subscribing to the same server-emitted events. I first built the Express server with in-memory state (queue array, stats object, doctor status). Then built the receptionist form with token auto-generation and validation. One early mistake: I tried managing state locally in each client, which caused desync on reconnect. I fixed this by making the server the single source of truth — emitting on every socket connection. Results Both dashboards sync in under 100ms via WebSocket events — no polling, no page refresh. The patient display auto-calculates estimated wait time and renders Comfortable / Moderate / Busy Hour status dynamically. The system supports full daily reset, live announcements, doctor shift tracking, and token history logging. ARIA live regions, keyboard navigation, and semantic HTML ensure screen reader compatibility. If I had conducted formal user testing, key metrics to measure would be: reduction in receptionist interruptions per hour, patient-reported wait clarity, and queue throughput speed. Reflection I'd add a persistent database (SQLite or PostgreSQL) instead of in-memory state, so queue history survives server restarts. I'd also build a mobile-optimized view for patients to check their token position from their phone, removing the dependency on a physical display screen. Early on, I underestimated the complexity of reconnection handling — I'd design the socket event contract more formally upfront. Finally, I'd run usability tests with actual clinic receptionists to validate the dashboard layout before building, rather than iterating purely on assumptions.