QueueLess v1.3.5 — Pulse
The queue is no longer passive. This release makes QueueLess proactive — customers get push alerts before they even think to check, admins can pause individual services without touching the rest, tokens can be re-issued for latecomers, and the queue resets itself overnight without anyone lifting a finger.
🔔 Proactive customer push notifications
- Alert fires at position 2 — "You're almost up — head to the counter soon"
- Alert fires at position 1 — "You're next — make your way now"
- Works in background tabs via the Web Push API
- Fires only on actual position change, never on page load
♻️ Token re-queue
- Expired tokens can be re-issued within a 2-hour window
- Re-queue preserves the original service, priority, and group size
- Customer is redirected to the new token page instantly
POST /tokens/:id/requeue
👨👩👧 Group / family tokens
- Customers select a group size of 1–5 when taking a token
- Group badge shown on the token page and in admin waiting lists
- Hidden for the Medical/Hospital industry profile
⏸ Per-service pause
- Admins can pause individual service queues without affecting others
- Paused columns show a
PAUSEDbadge; Call Next is blocked for that service - Customers on
/takeare auto-redirected away from paused services - Priority tokens always bypass per-service pause
🚨 SLA wait alert
- Red banner on the admin dashboard when any service exceeds the configured SLA wait target
- Threshold set in Settings → Queue Behaviour (minutes)
📊 Staff performance metrics
- New Staff Performance table in Admin Analytics
- Shows tokens served, average service time, and tokens called — per staff member
- Sourced from
staff_usernamenow correctly attributed on every queue action (admin and staff portal) GET /admin/analytics/staff
🗓 Scheduled daily auto-reset
- Set a daily reset time (HH:MM) in Settings → Queue Behaviour
- Queue resets automatically at that time in the Asia/Karachi timezone
- Duplicate-reset protection via a same-day flag
👥 Multiple admin accounts
- Create and manage up to 10 admin accounts at
/admin/manage - Passwords bcrypt-hashed; no account can delete itself
GET / POST / DELETE /admin/admins
📺 Display board welcome message
- Admins can set a permanent welcome banner on the display board (
/display) - Configured in Settings → Display Board
🤝 Appointment → walk-in auto-merge
- Confirmed appointments automatically become priority tokens within ±5 minutes of their scheduled time
- Prevents double-issue; logs an
appointment_mergedanalytics event
🛠 Analytics — complete historical coverage
- Analytics now cross-references Firebase RTDB directly for token counts
- All tokens ever issued appear in stats — not just those logged after setup
- CSV parser refactored to use column-name mapping from the header row (no more fragile index positions)
🐛 Bug fixes
- Staff portal
callNextToken()was never passingstaffUsername— all staff actions showednullin analytics - Admin dashboard
apiCallNext/apiCallNextPrioritymissingstaffUsername— now passesuser.sub - Temporal Dead Zone crash in
MyToken.jsx—positionconstant referenced inuseEffectdep array before declaration; hoisted above all hooks
Files changed
backend/src/services/queue.service.js · analytics.service.js · scheduler.service.js (new) · appointmentMerge.service.js (new) · admin.controller.js · staff.controller.js · admin.routes.js · token.controller.js · token.routes.js · server.js
frontend/src/pages/AdminManage.jsx (new) · AdminDashboard.jsx · AdminSetup.jsx · AdminAnalytics.jsx · TakeToken.jsx · MyToken.jsx · Display.jsx · App.jsx · components/Layout.jsx · services/api.js
Full changelog: CHANGELOG.md