You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
QueueLess is a full-stack, cloud-native digital queue management system that replaces paper tokens with a real-time browser experience. Customers take tokens from any device, track their live position, and get notified the moment their number is called — no app download required.
Admins and staff manage the queue from a dedicated portal with a live dashboard, ML-assisted auto mode, granular analytics, and per-service staff portals. Every queue event is dual-written to MongoDB Atlas and a CSV event log, feeding a data mining pipeline that performs wait-time predictions, peak-hour heatmaps, and staffing recommendations.
v1.4.x turns QueueLess into an intelligent operational workspace: admin-defined custom queues, cross-counter token referral, a grounded AI assistant (RAG, never fabricates data), internal team messaging (1:1 + group chat), a notification center, secure sharing with QR codes, shared files, and role-based access control — all on the free Firebase Spark plan (no Cloud Storage / Blaze required).
Features
Customer-facing
Take a token — pick a service, request priority if needed (elderly, medical, VIP), and get a token number instantly
Group / family token — select a group size (1–5) when taking a token; hidden for medical industry
Wait preview — see live queue length and estimated wait per service before committing
Live position tracking — real-time queue position, ETA, and status powered by Firebase WebSocket
Proactive push notifications — alerted at position 2 ("almost up") and position 1 ("you're next") even in background tabs
Token re-queue — expired tokens can be re-issued within 2 hours without losing your place history
Appointment booking — pre-book a visit by date, time, and service at /book
Confetti + sound alert — browser celebration when your token is called
Token history — all tokens ever taken on this device at /history
QR code on home page — scan to join the queue without typing a URL
Email tracking link — optional email with token number and live-tracking link
Feedback — submit a star rating + comment after being served
Admin portal (/admin)
Live dashboard — real-time queue state per service with priority section, waiting list, serving-now card
Per-service pause — pause and resume individual service queues independently; priority tokens always bypass
SLA wait alert — red banner when any service exceeds the configured wait-time target
Live announcements — broadcast a message to the display board and all customer screens instantly
Token lookup — search any token by number, ID, or note; add inline notes from results
Call next / skip / no-show — advance the queue or mark a token expired
Priority queue — priority tokens served first across all service counters; regular queues auto-blocked until cleared
Pause / resume / reset — full queue control including scheduled daily auto-reset
ML Auto Mode — automatically calls next tokens on a dynamically calculated interval from historical traffic
Analytics dashboard — peak-hour heatmap, hourly bar chart, service distribution, staff performance table, CSV export
Detailed report — full traffic heatmap, drop-off rate, staffing AI suggestions, print to PDF
Appointment management — list, confirm, and cancel customer bookings; confirmed appointments auto-merge into the queue ±5 min
Staff management — create/remove staff, assign services, set PIN for kiosk login, see who is online/offline
Admin accounts — manage up to 10 admin accounts at /admin/manage; bcrypt-hashed passwords
Feedback viewer — customer ratings and comments with average score; record verbal feedback manually
Settings — organisation name, city/location, Industry Type, display board message, SLA target, auto-reset time
Separate login — staff authenticate with username + password or PIN via kiosk mode
Service-scoped dashboard — call next for assigned service, skip / no-show current token
Token notes — attach a short note to any called token (visible on display board and admin dashboard)
Announcement banner — live admin broadcasts shown at top of staff view
Priority awareness — alert when priority customers are waiting at other counters
Online/offline presence — Firebase-powered live presence dots visible to admin
Staff kiosk (/kiosk) — fullscreen PIN numpad for shared terminals
Display board (/display)
Fullscreen TV-optimised view — now-serving token per service, priority section, welcome banner, announcement banner, flash animation on token change, live clock
Intelligent workspace (v1.4.x)
Custom queue management (/admin/queues) — admins create their own queues within an Industry Type with full CRUD: create, edit, enable/disable, archive, delete (blocked while active tokens exist), reorder, capacity, working hours, average service time, token prefix, and per-queue staff assignment + analytics. Dedicated Create and Manage screens.
Token referral / transfer — move a live token between counters (e.g. hospital OPD → Eye Specialist); it keeps its number, records a referral trail, is served as priority-tier at the destination, and never auto-expires mid-transfer.
AI Assistant — a floating ✦ button on every screen + a full-screen workspace (/assistant). Answers operational questions (longest wait, today's summary, predicted traffic, staffing) using Retrieval-Augmented Generation over verified backend data — it never fabricates figures. Pluggable providers (zero-config grounded default + optional OpenAI / Groq / OpenRouter / Ollama / Gemini). Persistent conversation history (pin, rename, delete, export).
Predictive insights — explainable wait-time forecasts, congestion alerts, and recommendations from a trained model artefact (scikit-learn) with rule-based cold-start fallback.
Internal messaging — a docked 💬 message tray (bottom-anchored, slide-up, persistent) with 1:1 and group chat for admins & staff, team directory, emoji reactions, read receipts ("Seen"), and inline attachments (≤256 KB). Real-time without external services.
Notification Center — a header 🔔 with unread badge + a dedicated screen (/notifications); driven by an application-wide event bus (token referred, queue created, new message, …).
Secure sharing — share queue snapshots / analytics as capability links + QR codes with a printable view (/share/:id) and expiry/revoke.
Shared files (/files) — drag-and-drop sharing of reports, exports, PDFs, Excel, Word, ZIP (≤2 MB), stored in RTDB to stay on the free Spark plan (no Cloud Storage / Blaze).
Role-based access control — Super Admin > Admin > Manager > Staff. Managers run operations; only Admins+ manage accounts; only Super Admin changes roles. Audit log of sensitive actions at /admin/audit.
Industry profiles
Each Industry Type ships sensible default queues; admins can also add their own under Queues.
Profile
Default queues
General Office
General Inquiry, Consultation, Transaction, Billing & Payments, Help & Support
Bank / Finance
New Account, Loan, Foreign Exchange, Card Services, Priority Banking, Locker, General Banking
GET/POST /admin/queues, GET /admin/queues/:id, PUT /admin/queues/:id, PUT /admin/queues/:id/enabled, PUT /admin/queues/:id/archive, DELETE /admin/queues/:id, PUT /admin/queues/reorder, GET /admin/queues/:id/staff, GET /admin/queues/:id/analytics
admin-tier
Referral
POST /admin/queue/refer/:tokenId, POST /staff/queue/refer/:tokenId
admin / staff
Predictions
GET /admin/predictions
admin-tier
AI assistant
POST /assistant, GET/POST /assistant/conversations, GET/PUT/DELETE /assistant/conversations/:id
admin / staff
Messaging
GET /directory, GET/POST /conversations, GET/POST /conversations/:id/messages, PUT /conversations/:id/read, PUT /conversations/:id/messages/:mid/react
admin / staff
Notifications
GET /notifications, PUT /notifications/:id/read, PUT /notifications/read-all
admin / staff
Sharing
POST/GET /shares, DELETE /shares/:id, GET /share/:id (public capability)
admin / staff
Shared files
POST/GET /uploads, GET /uploads/:id, DELETE /uploads/:id
admin / staff
RBAC + audit
POST /admin/admins (role), PUT /admin/admins/:username/role (superadmin), GET /admin/audit
admin / superadmin
Message, notification, and file content is served only via the JWT API; the Realtime Database holds only content-free signal nodes (messageSignals, notificationSignals) that clients subscribe to for real-time refresh — no Firebase Auth required.
Quick Start (Local)
Backend
cd backend
cp .env.example .env
# Fill in: FIREBASE_PROJECT_ID, FIREBASE_CLIENT_EMAIL, FIREBASE_PRIVATE_KEY,# FIREBASE_DATABASE_URL, JWT_SECRET, ADMIN_USERNAME, ADMIN_PASSWORD
npm install
npm test# Jest + Supertest
npm run dev # http://localhost:4000
Frontend
cd frontend
cp .env.example .env.local
# Fill in: VITE_API_BASE_URL=http://localhost:4000/api/v1# Fill in all VITE_FIREBASE_* values from Firebase Console > Project Settings
npm install
npm run dev # http://localhost:5173
Analytics Pipeline
cd analytics
pip install -r requirements.txt
python run_pipeline.py
# Simulates 4,400+ events → cleans → trains model → generates 6 charts# If analytics/data/queue_events.csv exists from the live backend, uses real data
Deployment
Firebase Rules
cd firebase
firebase login
firebase deploy --only database
Backend → Render
New Web Service → connect this repo → root directory: backend
Render auto-detects render.yaml for build/start commands
Add secret environment variables in Render dashboard (see backend/.env.example)
Frontend → Vercel
New Project → connect this repo → root directory: frontend
Framework: Vite (auto-detected) — frontend/vercel.json handles SPA rewrites
Add all VITE_* environment variables from frontend/.env.example
Cloud Computing Concepts Applied
Concept
Implementation
PaaS hosting
Vercel (frontend CDN + serverless) + Render (backend web service)
AIProvider interface with grounded (zero-config) + OpenAI/Groq/OpenRouter/Ollama/Gemini providers, selected via AI_PROVIDER; RAG grounding so no operational data is ever fabricated
Capability-based sharing
Secure share links (128-bit random ids) + QR codes, served read-only via the API with expiry/revoke
Firebase Security Rules
Schema-validated RTDB rules — clients read-only, server writes, presence client-writable
Presence detection
Firebase onDisconnect() for real-time staff online/offline state
Token referral between counters, custom queue management, live "serving for" timer + next-in-queue, Industry Type rename, trained ML predictions, credits page
Smart Queue Token Management System — real-time digital queue with admin portal, staff portal, ML auto mode, analytics, and a Python data mining pipeline.