Case study · Software
Plate.
A restaurant website platform we designed, built and run. Owners keep their menu, prices, photos and hours current in one place, then publish the changes to their own website, without calling a developer.

The challenge
Restaurants change daily. Their websites don’t.
Independent restaurants change prices, specials, hours and dishes all the time. Their websites rarely keep up, because every update means waiting on a developer or fighting a website builder.
So the site drifts: old prices, last season’s menu, the wrong holiday hours. Customers notice before the owner does.
The goal for Plate was simple to say and hard to build: one place where an owner changes something once, previews it, and publishes it to their own website safely.
What we built
A full product, not a prototype.
- A menu and price editor with dishes, descriptions, tags and photos, organized by section
- A preview of exactly what customers will see, and an explicit Publish step so half-finished edits never go live
- Publishing safeguards that refuse to push an empty or broken menu to a live website
- Importing an existing menu from a link, with uncertain items flagged for the owner to confirm
- Hours tied to real dates, and a photo library that shows which dishes still need a photo
- Accounts that hold multiple restaurants, with role-based access for owners and staff
- A customer list with consent and opt-out tracking, plus email and text campaigns
- Post ideas and social scheduling through a Make → GoHighLevel pipeline
- Subscription billing through Stripe



All screens use Plate’s demo restaurant. No client data is shown.
Under the hood
Engineered to be trusted with a business’s data.
- 01Data separation by design
Postgres on Supabase with row-level security, so each restaurant’s records are isolated at the database level, not just in the interface.
- 02Server-side work stays server-side
Publishing, billing and messaging run in server functions. API keys and secrets never reach the browser.
- 03Safe publishing
Changes are staged, previewed and checked before they reach a live website. A menu that would publish empty is blocked.
- 04Tested on every change
An automated test suite runs in GitHub Actions on every proposed change, covering access rules, publishing and messaging consent.
- 05Honest status reporting
When Plate hands a message or post to another service, it records exactly that, and never claims something was delivered when it can’t confirm it.
Where Plate stands today
Plate is live in production at app.cravengine.com and in early access. It’s our own product, sold to restaurants as Plate, powered by CravEngine, our restaurant brand. The same team that builds client software builds and runs Plate.
Lead routing for VIP Real Estate
→Start a project
Have something in mind?
Let’s build it.
Whether you’re launching a new idea or improving how an existing business runs, tell us what you’re trying to create. You’ll get an honest answer on what it takes — even when the answer is a tool you can already buy.