← All work
Restaurant · Bespoke software
TAVDI
A menu that was finished before the photographs were. Visit the site →
Hover a dish and its clip fades in. Add one and the bag fills. Try it yourself →
The problem
A Surti egg house needed collection orders and table bookings, in Gujarati and English, across 37 dishes.
They had no photographs yet, and would not have all of them for months. A menu with eleven photos and twenty-six grey boxes is worse than none.
Every dish draws itself
Each dish carries a recipe rather than an image. One line of data becomes an animated scene — burner, pan, food, steam. These are running now:
A('tawa', ['scramble','pav'], ['garlic','chilli'], 3, '#FF6B1A')
vessel filling garnish heat light
The decisions that mattered
- Three layers, any of them optional A clip on top, a photo beneath, the drawing underneath. A missing layer removes itself. The menu was complete on day one and still complete when all 37 photos landed — so they opened before the shoot finished.
- Clips load on hover, never on page load 37 dishes must not cost a visitor 37 video downloads to see one.
- No framework, no build step, no dependencies It runs from a double-clicked file. A restaurant should not need a developer on retainer to change a price.
- Motion that knows when to stop Scenes pause when scrolled off screen, nothing runs per frame in JavaScript, and reduced-motion freezes every one to a still.
37dishes
7pages
2languages
0dependencies
What it does
- Collection ordering — time slots, promo codes, loyalty points
- Table booking across four rooms, with live seat counts
- Accounts, order history, saved favourites
- Searchable menu in nine chapters, Gujarati and English throughout
Twelve of the 37, with the photography stripped away.