(—) Work — Client work
Dubai meal-plan marketplaceIn development

A marketplace rebuilt, and menus that load themselves.

A meal-plan marketplace in Dubai asked us to recreate and improve its app and back office, and to work towards menus that upload automatically from the kitchens it works with. We are building the new platform alongside the system the business runs today, which stays live until the switch-over. The client has agreed to this work being shown; their name, their kitchens and their customers are not.

Back officeiPhoneWebTypeScriptNext.jsReactPostgreSQLDrizzleSwiftUIHealthKitStoreKit 2

The problem

Menus typed in by hand, and a panel that only hid buttons.

The marketplace's menus were keyed in by hand, and its old admin panel hid buttons from people rather than enforcing what each role could do.

The brief was clear: menus from a known source, kept current; kitchens without a website upload by link; gaps emailed back to the kitchen; every kitchen checks its own menu; and dish photos kept uniform.

What we built

01

A back office with real roles

Four roles enforced on the server, not just hidden in the interface, across dashboards, kitchens, menus and orders, with an audit log of every change and sixteen data-quality checks.

02

Menus that load themselves

Each kitchen's menu comes from a known source — its website, an upload or a link — and is read into weeks, days, meals and dishes, with nutrition, by AI.

03

Kitchens in the loop

A portal where kitchens see each menu and can object, with anything missing emailed back to them.

04

A customer app

Plan search, a price builder, the real menu before choosing dates, a basket across kitchens, and pause, skip and swap, with a delivery calendar that knows every cut-off.

05

Health, on the phone

A daily score with meals logged from deliveries, alongside sleep, glucose and fasting, kept on the phone.

06

A website

The plan builder with menu previews, a calendar and a basket, and an account area to skip, pause, resume and reorder plans, covered by 460 tests.

07

A running app

A GPS run tracker with a voice coach, splits and crash-safe recording, heat advice for Dubai and checked routes. Group runs are in progress.

08

A customer API

Email-code and Sign in with Apple, a wallet, checkout priced on the server, and account deletion, with 105 unit tests. In progress.

Under the surface

The engineering

  1. 01

    The menu collector honours robots.txt, skips pages that have not changed, and reads PDFs, photos, spreadsheets and web pages.

  2. 02

    A six-rule check decides whether an imported menu could publish itself. For now the default is review by a person, side by side with the source.

  3. 03

    A week built by hand, or approved by its kitchen, is never overwritten by an import, and no dish photo is ever made by AI.

  4. 04

    The old system's data comes across through a read-only extractor, and an importer that anonymises customers on the way in.

  5. 05

    Staff sessions are signed and last twelve hours, customer tokens are stored hashed, and one-time codes are HMACs.

  6. 06

    Orders are priced on the server and safe to retry, so a repeated request never creates a second order.

  7. 07

    The menu catalogue is served with ETags and compression, taking it from 6.3 MB to 0.6 MB.

Shown with permission

The client has agreed to this work being shown without their name, their kitchens or their customers. The new platform runs as a demonstration with anonymised customers while the business's current system stays live, and none of it is on the App Store yet.

Start a project

Tell us what you are building.

A few lines about the problem is enough to start. We reply within one business day.