Thornbury DigitalMenu

Fig. 04 — Case

Loam

Good coffee, no theatre.

Loam: a café home page with espresso pulling into a white cup behind the headline ‘Good coffee, no theatre.’ and a dark bar showing today’s opening hours. Fig. 04 Café / Thumb-first

Deployed and open — nothing on this page is a mockup

Open the live site

IWhat it is

A neighbourhood café and small roastery whose whole menu is a working order surface.

Tap to add, watch a tray fill, send it to the counter. Warm, rounded and photographed, built to be used with a thumb — and every figure on it computed rather than typed.

IIWhat was decided

  1. Mobile is the base case, not a breakpoint.

    The stylesheet is written for a phone first and widened at larger sizes. The tray docks to the bottom of the viewport with the safe-area inset respected, filter chips scroll sideways, and every control clears 40 to 44 pixels.

  2. The tray is the spine.

    Tap Add and the card marks itself, a badge counts what is on the tray, a toast confirms in words, and a docked bar appears with a live total. The bar opens a sheet with quantity steppers, per-line removal, a note to the counter, the total, and a pickup estimate computed from the ticket: four minutes plus one per item.

    CheckState persists between visits and is re-validated on load — anything no longer on the menu is dropped. Nothing is ever charged.

  3. Every figure is computed.

    Line prices, totals, the pickup time, the item counts in the copy — all of it comes from one catalogue file. Change a price there and the whole site follows. The currency is a single constant at the top of that file.

  4. Service hours are real.

    Whether the door is open, how long until it closes and when it opens next are derived from the hours, not written by hand — and the kitchen keeps its own clock. Plates outside kitchen hours render dimmed and disabled, labelled with the kitchen’s own next start.

    CheckThe café’s opening and the kitchen’s are different clocks, and the site never conflates them.

  5. One accent, and one “yes”.

    Ember is used with discipline: kickers, the price on the tray, the primary button. A single green is reserved for genuine yes states — the open-now dot and a card that is on the tray.

    CheckContrast was audited across 25 colour pairs; the tightest is 5.41:1, past AA.

  6. Every state change says something.

    A toast, a badge, a count or a sentence. Reveals rise 14 pixels on a soft ease and never keep their opacity in a keyframe; injected markup is rescanned so nothing arrives invisible.

IIIWhat was measured

Colour pairs audited
25tightest 5.41:1, past AA
Smallest control
40 pxevery chip and button, 44 for the primary ones
Pickup estimate
4 min + 1per item, computed from the ticket itself
Prices typed by hand
0everything derives from one catalogue file

Fig. 08 — Next

Null Carnival

A night fair you turn, not a page you scroll.