Module Reference

Queue

A walk-in line with numbered tickets, a lobby screen and a host console for calling the next party.

Queue runs a walk-in line. A guest takes a numbered ticket on their phone or a kiosk at the door, or the host adds them, and then follows their place on a status page. A lobby screen shows the tickets being served, and the host calls the next party from the admin or from the register. Each queue belongs to one Location and can show a wait estimate worked out from recent waits. Queue stands on its own, so a walk-in-only business needs only Queue and POS. With Booking on, a ticket can be linked to a customer and a booking, and the guest is told on LINE when they're called. Tables and tickets at the till are POS's, and customer records are Customers'.

What it handles

  • Ticket numbers that don't collide. Eight guests joining at the same moment get A-001 to A-008, each queue counts on its own, and numbering starts again each local day. A join sent twice with the same request gets the same ticket and doesn't use up a number. Tested: "Queue: join tickets" Tested: "Queue: join idempotency"
  • Two hosts pressing Call next at once. Parallel hosts each call a different waiting party, the last party in line has exactly one winner, and the called message goes out once. A reorder from a screen that's out of date is refused. Tested: "Queue: concurrency real pg" Tested: "Queue: call next"
  • Guests who don't come back. A called party that isn't back by the hold deadline is marked a no-show or moved back into line, as the queue is set up. Overlapping clean-up runs act on each party once, and one party's failure doesn't stop the run. Tested: "Queue: janitor" Tested: "Queue: adaptive janitor"
  • Guests see their own ticket and nothing else. The guest status page and the lobby screen carry no names, phone numbers, LINE accounts or notes, while the host sees them. Reading or leaving a ticket needs that ticket's own link, and leaving twice is harmless. Tested: "Queue: projections pii" Tested: "Queue: guest api"
  • Screens and kiosks tied to one Location. A lobby screen at one Location can't show another Location's tickets or join its line by changing the address. A kiosk link that's missing, tampered with or expired shows nothing, and an admin can make kiosk links only for their own Location. Tested: "Queue: kiosk binding" Tested: "Queue: page guards"
  • Location admins. An admin limited to one Location edits that Location's queues but can't move one elsewhere or list another Location's. A queue with no Location, or an inactive one, is refused. A queue can be opened at a store but not at a warehouse. Tested: "Queue: admin api branch" Tested: "Queue: location type"
  • Calling a party to their table. A call can hold a table: the LINE message, the host's list and the lobby screen name it, and the screen never carries the table's id or the guest's name. The called message is sent once even when it's retried, and guests with no LINE link or with LINE messages off are skipped. Tested: "Queue: held table" Tested: "Queue: line effects"
  • A line with nothing else switched on. A guest can join with no customer, LINE or points features wired, and the ticket stays a guest ticket. Tested: "Queue: absent bridge guest only"

What you build on top

  • Seating at the register. With POS on, the register's host console gets Seat and Call to table beside each party through the queue.entry-actions slot, and the plain Serve button steps aside. POS also signs register staff in by PIN through queue.register-auth. Your app can add its own action beside a party in the same slot. See Extend a Module.
  • Customers and bookings. Booking links a ticket to a customer and to that customer's booking, and sends the LINE messages. With Booking and Account on, a signed-in customer's account gets a Queue tab where they see and leave their own ticket. With Customers on, a served ticket appears in that customer's history.
  • Points for a visit. With Booking and Membership on, a queue can award points for the visit, for what the party spends at the till, or both.
  • Your words. Rename "Queue" or "ticket" for the business with an override.
  • In code. Your coding agent imports Queue only through its public API: index.ts and server/index.ts in apps/web/src/modules/queue/. See Build on a Module.

Limits

  • Guests are told they've been called on LINE only, and only with Booking on. There's no SMS.
  • Queue doesn't own tables. Without POS, the host serves a party but can't seat it at a table.

Facts

Pages

WherePath
Queue display/queue
Admin/admin/queue
Register/register/queue

Permissions

Admin holds every key. The other roles listed hold it when the app first gets the Module; after that, roles are yours to change under Settings → Roles & Permissions.

PermissionWhat it allowsOrganization roles that start with it
admin-panel:writeFull compatibility access to all module administration, including POS, catalog, storefront, and CRM staff tools.Admin
operations:writeManage daily bookings, queues, customer arrivals, and routine front-desk operations.Admin, Manager, Staff
settings:writeConfigure resources, schedules, availability, fares, blocked periods, and queue setup.Admin

Data

  • Tables: queue, queue_daily_counter, queue_entry, queue_event

Slots

Places other Modules and your app code can add to. See Extend a Module.

  • queue.register-auth
  • queue.entry-actions

Tested workflows

  • Queue: absent bridge guest only
  • Queue: page guards
  • Queue: public boundary
  • Queue: regressions
  • Queue: audit
  • Queue: location type
  • Queue: admin home
  • Queue: adaptive janitor
  • Queue: booking pair portal (with Booking on)
  • Queue: module disabled (with Booking on)
  • Queue: operation permissions (with Booking on)
  • Queue: Starcat admin access (with Booking on)
  • Queue: guest api (with Booking on)
  • Queue: admin api branch (with Booking on)
  • Queue: settings writer contract (with Booking on)
  • Queue: kiosk binding (with Booking on)
  • Queue: join tickets (with Booking on)
  • Queue: state machine (with Booking on)
  • Queue: call next (with Booking on)
  • Queue: ordering (with Booking on)
  • Queue: projections pii (with Booking on)
  • Queue: outbox (with Booking on)
  • Queue: atomic mutations (with Booking on)
  • Queue: join idempotency (with Booking on)
  • Queue: line effects (with Booking on)
  • Queue: crm points (with Booking on)
  • Queue: janitor (with Booking on)
  • Queue: endpoint congruence (with Booking on)
  • Queue: concurrency real pg (with Booking on)
  • Queue: held table (with Booking on)
  • Queue + customers: served tickets land in Customers (with Customers on)