SaaS, Web app, Multi-tenant
Clinic reservations & queue management
Online booking, live waiting lists and WhatsApp confirmations for medical clinics.
Clinics lose time to phone bookings and crowded waiting rooms. This system lets patients book without an account and follow their place in the queue, while staff confirm requests, prioritise urgent cases and message patients on WhatsApp — all updating live. It is multi-tenant, so each clinic gets its own branded workspace.
- Users
- Patients (no login), clinic owner and employees (permission-based)
- Client
- React single-page app, installable PWA, Arabic RTL
- Real time
- Socket.IO with one room per tenant (and location)
- Companion
- Separate Node/Express API service
Screens
Landing page (Arabic)
Screenshot of the live landing page at egypt-clinic.com.
Patient experience
- Self-service booking without registration: name, 11-digit phone, visit type (check-up / consultation) and preferred slot, with instant confirmation and a tracking link.
- Status lookup by phone number showing confirmation state, queue position, date/time and visit type; the page refreshes automatically every few seconds.
Clinic dashboard
- Today and Pending tabs with live counters and instant notification when a new request arrives; floating “quick add” for walk-ins.
- Reservation requests: confirm, reject with a reason, mark urgent / very urgent (moves up the queue), attendance (present / no-show) and private notes.
- Queue management grouped by session period with automatic queue numbers, date and period filters, phone search and per-status counters (all, present, absent, done, cancelled, no-show).
- One-click WhatsApp messages with a template each clinic can edit.
Multi-tenancy, access control and billing
- Tenant resolved from the host; unknown tenants land on a dedicated not-found page; each tenant can customise its theme and appearance.
- Permission-based UI (a PermissionGate and usePermissions hook over an owner/employee hierarchy) rather than scattered role checks; employees management screen.
- Location-based access control: staff are scoped to clinic locations, with a location selector, a locations screen with maps, and location-aware socket events.
- Subscription billing screen with plan status, payment history and Instapay payment info, plus a warning banner when a subscription is about to lapse.
Analytics
An analytics dashboard with KPI cards, a smart-insights panel, and reservation-trend, visit-type and location-comparison charts with filters and four tabs — RTL-correct and built against a documented analytics API.
Real time, PWA and performance
- Redux store with a socket slice; a useSocketEvents hook subscribes to per-day, “requests” and “latest” events inside the tenant room, so updates never cross clinics.
- Service worker and Web Push (VAPID) notifications with click-through routing.
- Build optimisation, mobile-responsive review of the data-heavy screens (employees, reservations), and staging/production build profiles served with PM2.
Documentation
The repo carries extensive engineering docs: system documentation (Arabic/English), API guides for frontend integration, socket debugging and verification guides, theme API, subscription API, testing guide and migration plans — written so the frontend and backend could evolve independently.