The idea
Take a number. At a small practice the first thing in a visitor’s hand is a ticket from the counter; Gilir makes that ticket the interface. A notched g plate names the counter, the opening is the counter form itself — a service lane and a sample slot as plain radios — and the result is one torn ticket: a large lane number, three label–value lines and a stub that always says it is a fictional sample. No portraits, slogans, ratings or promises about waiting.
Visual language
Enamel mint, deep green ink and bone paper, like a counter plate and the ticket in your hand; apricot only marks a choice that changed after the ticket was made, always with words. 1px ruled lines, square corners, a dashed tear with two punched notches. A choice shows a filled radio, a side rule and its lane letter — never colour alone.
Typography
Atkinson Hyperlegible Next 600, drawn to keep letters and figures apart, sets the wordmark, titles, lane letters and the ticket number, where A-014 must read at a glance (its zero is slashed). DM Sans carries labels, radios and notes.
Layout & composition
Nameplate and three page links over one rule, then the one line that says the demo is fictional. On wide screens the form sits left with the draft ticket on the right; the ticket page widens the ticket. Below 700px the links take their own row, the form reads service → slot → summary → button, and the full ticket appears once it is made, after its title and actions.
Motion & interaction
No animation: choices, the number and the notices change instantly, with no rolling digits and no call sound; nothing moves on its own.
Under the surface
Static bilingual Next.js pages. One draft — the selection and at most one ticket, as IDs — stays in this browser under its own key, size-checked (2 KiB) and validated with Zod on every read; numbers and labels come from fixtures, never from storage. TXT and the browser’s print are made locally. No account, booking, queue system or server.
Designed for everyone
Services and slots are native radios in fieldsets with legends (Tab, Space, arrows); the slot group waits for a service and says so. An incomplete choice is named next to its group, linked with aria-describedby, and focus moves there. Step marks pair a tick or a number with words and aria-current; page links use aria-current. A new ticket is announced and its title takes focus; clearing asks first.
Inside the experience
- Counter form: three sample lanes and three sample slots as native radios
- Draft ticket beside the form; a torn ticket with a large number once made
- Specific messages and focus for an incomplete choice
- TXT export and a print layout of the ticket alone
- Own component and state book
- Local brand personalization
A good fit for
- Small clinics and practices, counters and service desks that want to show how a queue would work — choose a lane, a slot, keep a ticket — before an operational system is built.