QueueCure — Real-time queue system for India's paper-slip clinics
Overview
76% of India's 1.5 million clinics still run on paper token slips. Patients wait two to three hours with zero idea when they'll be called. Receptionists manage queues from memory. Doctors have no dashboard. Wait time estimates do not exist. Walkouts happen. Priority cases get lost. Receptionists burn out from constant questions like "how long more?". The fix isn't another booking app, it's giving every role a live view of the same queue. Started by mapping every person who touches a clinic queue, not just receptionists. Ended up with four roles: receptionist (manages queue), doctor (consults), waiting room (passive viewers), patient (anxious). Each needed a different screen. Built the backend first. Socket.IO with per-clinic mutex for concurrency, Zod for payload validation, in-memory state for sub-millisecond reads, PostgreSQL for history. Documented 34 edge cases up front so they wouldn't surprise me later. Frontend went through three theme iterations. First attempt was too generic SaaS. Second was too templated. Third (cream and green with mono token numbers as the signature) finally felt like a real product. Late additions: doctor screen with auto-saving notes, CSV export, patient access token to prevent URL spoofing Shipped a working production system in under a week: - Four live screens that sync in under 200ms - Wait estimates from rolling 10-visit average with confidence-adjusted margin - Absent patient recovery (mark absent, reinstate to front or back, never auto-skip) - 5-second undo on every queue advance - Role-based PIN auth - Patient access tokens prevent URL tampering between tokens - CSV export of any filtered date range Deployed live on Vercel + Render + Neon. Tested every edge case manually with three browsers open side by side. Three things. One, I'd write the design system before any component. Reworking buttons and cards across four screens after they were built cost a full day. Two, I'd put active queue in Redis from the start. In-memory works for a single server but loses state on restart. Documented this as a known limitation, but a real clinic would need persistence. Three, I'd add SMS notifications. The patient page chimes when they're next, but only if their browser tab is open. A real product needs WhatsApp or SMS so patients can step out without losing their place.