← 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 dish illustrations, each generated from one line of code

Twelve of the 37, with the photography stripped away.