Case study
HelloRestaurant
Diners find a restaurant and book a table online. Restaurants manage bookings, walk-ins, tables, menus and orders from one portal, and each restaurant gets its own booking website.

What it does
- Drag-and-drop floor plan, with tables that join for larger groups
- A QR code on each table opens the menu for ordering, and orders appear on a kitchen screen
- Email reminders for guests and a morning summary for owners
- Turns a photo of a printed menu into menu items
- Payments and subscriptions through Stripe
The portal also covers customers, reviews, analytics and the restaurant's own website, which lives on its own subdomain.
How it fits together
-
People
- Diners on web and phone
- Restaurant staff in the portal
- QR codes on each table
- Kitchen screen
-
App
- Next.js on Cloudflare Workers (OpenNext)
- Restaurant websites on subdomains
-
API
- GraphQL (Pothos)
- Prisma
-
Data and services
- D1 database
- R2 file storage
- Stripe payments
- Cloudflare email sending
- OpenAI for menu photos
How it's built
- Next.js and React, running on Cloudflare Workers through OpenNext.
- A GraphQL API built with Pothos, over Prisma and a Cloudflare D1 database, with files in R2.
- A scheduled job every 15 minutes sends booking reminders and owners' morning summaries through Cloudflare's email sending.
- Menu photos are read by an OpenAI vision model and turned into menu items with prices and variants.
Articles about HelloRestaurant
-
How HeySales counts visits from people who haven't accepted cookies
How the HeySales tracker counts visits with nothing stored on the device until a visitor agrees, recognises them for a day by hash, and flags bots.
-
Sending transactional email from Cloudflare Workers
How HeySales and HelloRestaurant send password resets, invitations and booking reminders with Cloudflare Email Sending and a send_email binding.
-
What changed when we moved two apps from Postgres to Cloudflare D1
The D1 and SQLite rules that broke our Postgres code when HeySales and HelloRestaurant moved to Cloudflare Workers, and how we handled each one.
Tell us what you're building.
Email us about your project: what it needs to do, who it's for and when you'd like it live.