Skip to content
All builds
BUILD #003LIVE

Digital Menu

A QR menu that loads instantly and can be updated from a phone in seconds.

Status
LIVE
Date
May 2026
Stack
Next.js / Tailwind / Cloudflare / SQLite
RESTAURANTWEBQR

The problem

Most QR menus are a PDF. They open slowly, they pinch-zoom badly, and changing one price means sending the file back to whoever designed it. Meanwhile the restaurant reprints the QR sticker every season for no reason.

The idea

Treat the menu as a product, not a document. A real web page that loads in under a second on restaurant wifi, works on any phone, and has an editor the owner can use from behind the bar.

Building it

How it came together, step by step.

01 / 04

Performance budget first

A hard limit was set before any design work: under 50KB of JavaScript and a first paint under one second on a throttled 3G connection. Every decision after that was measured against it.

Terminal

02 / 04

Designing for one thumb

Sticky category tabs, large photography, prices that stay readable in sunlight. Nobody pinches to zoom.

Mobile

03 / 04

An editor for behind the bar

Change a price, mark a dish sold out, reorder categories by dragging. Published instantly — the QR sticker never changes.

Interface

04 / 04

Serving it from the edge

Static generation with on-demand revalidation on Cloudflare, so the menu is cached close to the customer and still updates the moment it is edited.

Editor

Features

What it actually does.

01

Instant load

Under a second to first paint on restaurant wifi, on a five-year-old phone.

02

Edit from a phone

Prices, photos, availability and ordering — changed from behind the bar, live immediately.

03

Permanent QR

The sticker never needs reprinting. Content changes behind a stable URL.

04

Allergens and diets

Per-dish tags that customers can filter, which cuts a repeated question for staff.

05

Multi-language

Spanish, English and Arabic from the same dataset.

06

Sold-out toggle

One tap greys out a dish across every language at once.

Tech stack

What it is built with.

  • Next.js
  • Tailwind
  • Cloudflare
  • SQLite

The result

Where it ended up.

First paint
0.8s
JavaScript shipped
42KB
Lighthouse
100
Reprints needed
0

Build in public

Documented from day 1 to day 9.