Database-enforced commands
Browser clients cannot write queue tables directly. Every mutation crosses an explicit PostgreSQL function that authorizes the actor and applies one atomic state change.
Real-time product · Queue management
One synchronized answer to three questions: who is waiting, who is being served, and who is next.

The product
Paper lists and shouted names create uncertainty for customers and unnecessary coordination for staff.
Next gives customers a stable queue number and position, staff a focused command board, and public displays a privacy-safe view of the active number. All three experiences share persistent state and converge without manual refresh.
Product experience



Architecture
Next.js serves the interface from Vercel. Supabase provides anonymous authentication, PostgreSQL, RPC access, and filtered Realtime signals. The browser receives public configuration only; privileged credentials never enter the application runtime.
Browser clients cannot write queue tables directly. Every mutation crosses an explicit PostgreSQL function that authorizes the actor and applies one atomic state change.
Realtime messages tell clients that something changed; each client then fetches a revisioned authoritative snapshot and ignores stale responses.
Every command receives a request UUID. Safe replays return the current result while mismatched reuse is rejected before state can diverge.
Public displays expose queue numbers only. Optional customer names live in a private table and are available only to authorized staff.
Release evidence
The release was validated at the interface, domain, database, integration, browser, and production layers without counting the focused Realtime subset twice.
The project documentation also records free-tier limits, anonymous identity tradeoffs, recovery constraints, and deployment boundaries instead of presenting a portfolio release as an enterprise service.