FairCTO
← All work

FairMenu — fairmenu.app

A hospitality marketplace where guests search by what they want to eat, venues publish their real menu, and orders are paid online.

2026·View live
FairMenu — fairmenu.app
Next.js 16SupabaseMollieMulti-tenantSearchPWAPlaywright

Outcome

  • 3,740 hospitality venues discoverable across Amsterdam, The Hague, Leiden and Parkstad.
  • One product connects discovery, a claimable venue page, menu management and online ordering.
  • No fixed monthly fee for venues; the commercial model only charges commission on online orders.
  • Production-safe browser tests cover the public, claim, payment and admin boundaries on desktop and mobile.

My role

Founder, product owner and sole engineer — platform, marketplace, data pipeline and payments.

The challenge

Hospitality discovery starts with intent — 'matcha', 'ramen' or 'a good cappuccino' — but most platforms only index venue names and broad categories. Independent venues also need a low-risk way to publish their real menu and accept orders without committing to a large monthly platform fee.

What I built

A two-sided hospitality product: a consumer discovery PWA backed by live venue and menu data, plus a multi-tenant platform where owners claim a venue, publish a branded page, manage menu and opening hours, and receive paid pickup orders. One Supabase data layer powers both products.

How it works

  • Guests search for a dish, venue or address and filter by distance, opening state, ordering and discount.
  • A venue owner finds and claims an existing listing, chooses a branded address, publishes the real menu and controls opening hours and availability.
  • A paid order moves from Mollie confirmation to the venue's live order screen, with pricing and commission recalculated on the server.
  • Venue imports, menu extraction and data-cleaning scripts expand coverage while review and audit steps keep public data trustworthy.
Stack & why+
Next.js 16 + wildcard tenant routes
One deployment serves fairmenu.app, the claim flow and every branded venue page. New venues can go live without a separate deployment or application code change.
Supabase Postgres
A single source of truth for venues, menus, opening hours, claims, orders, discounts, commissions and settlement state — shared safely by the operator platform and consumer PWA.
Menu-level search
Literal, substring, approved-synonym and fuzzy search make venues discoverable by individual dishes. Synonyms are reviewed before a separate database write, so generated suggestions never silently change production search.
Mollie + server-side order state
Online orders use a verified payment flow and server-owned status. Commission, guest discount and settlement rules live in database migrations instead of being trusted to the browser.
Vite consumer PWA
The map experience stays a focused, fast installable app while reading the same production data as the platform — no static copy that can drift out of date.
Playwright + production-safe test boundaries
Desktop and mobile E2E coverage stubs writes and payments; live production checks remain read-only unless a dedicated explicit write suite is selected.

Ready to make AI actually work?

Products that do real work.