Skip to content

Pulse

Latest

Choose a tag to compare

@msufiyanpk msufiyanpk released this 21 Jun 23:45
· 4 commits to main since this release

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 PAUSED badge; Call Next is blocked for that service
  • Customers on /take are 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_username now 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_merged analytics 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 passing staffUsername — all staff actions showed null in analytics
  • Admin dashboard apiCallNext / apiCallNextPriority missing staffUsername — now passes user.sub
  • Temporal Dead Zone crash in MyToken.jsxposition constant referenced in useEffect dep 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