ClinicQue: Curing Waiting Room
Replaced chaotic, paper-based clinic waiting rooms with a real-time, multi-doctor digital queue that provides patients with mathematically accurate ETAs and aut
Overview
Currently, 76% of India's 1.5 million clinics run on paper token slips and shouting. Patients wait 2-3 hours in crowded spaces with zero visibility into their wait times, leading to severe "waiting room anxiety". Receptionists are forced to manage chaotic, multi-doctor queues entirely from memory. The gap identified was the complete lack of a zero-friction, real-time digital queue system that mathematically calculates accurate ETAs based on historical data rather than hardcoded guesses. Process My approach began with analyzing the receptionist's workflow. Any system taking longer than 10 seconds per patient would fail. I initially tried a standard REST API, but polling caused UI lag and heavy server loads. I pivoted to an event-driven WebSocket architecture (Socket.IO) to ensure instant zero-refresh synchronization across the Receptionist Dashboard, TV Kiosk, and Patient smartphones. Next, I tackled the ETA math. Hardcoded ETAs fail when doctors take breaks. I built a dynamic algorithm calculating a rolling average of actual consultation times, complete with a "Doctor on Break" pause state. Finally, I replaced the need for human shouting by integrating the native Browser Speech API for automated Voice Announcements over the clinic speakers. Results The prototype achieved a sub-10 second triage time for receptionists to register and assign patients. The WebSocket integration resulted in sub-100ms sync latency across all screens. The shift to a multi-doctor SQLite architecture proved the system's B2B SaaS viability. A major usability win was the click-to-WhatsApp feature and the automated voice calling, which completely eliminated the need for receptionists to shout names. The project successfully transforms a chaotic waiting room into a silent, mathematically organized environment. Reflection If I were to rebuild this, I would optimize the WebSocket payload. Currently, the server pushes the entire clinic's multi-doctor state to every connected client. At a massive scale, this would waste bandwidth. I would implement strict Socket.IO Rooms grouped by doctorId so clients only subscribe to their specific queue. Additionally, I would move the IP-rate-limiting logic out of the Node.js memory map and into a dedicated Redis cache to ensure the security persists across server restarts and deployments