A guest scans the QR on their table, joins with the code their server gives them, and orders in Thai or English. The kitchen sees it immediately. Staff run the floor, the bills and the menu from the same system.
12 tables95 menu records2 languages5 staff roles266 automated tests
The working system, and photographs of it
Every screen below was captured from the working application, but this page is
only pictures of it. To use the real thing — scan a table card with your own
phone, send an order, watch it appear on the kitchen board — GitHub will start
a copy in the cloud and give you an address any phone can open, on any network.
It takes about three minutes and costs nothing.
Those three are the working system, running in your browser with the restaurant’s real menu — tap through them, send an order, work a ticket. Nothing is installed and nothing is saved anywhere.
Staff sign-in for the demo: demo-owner with password rabbit-owner-demo. The guest
side needs no account at all — just the table card and the 4-digit code staff give at seating.
No. 01
At the table
On the guest's phone
Thai first, English on one tap. Prime rib is never added like a normal dish: the guest asks staff to weigh it, and only their confirmation of the quoted weight and price creates the order.
JoiningThe QR names the table, and that is the whole step: no code to type. A restaurant that wants one can switch it on.The menuDotted leader lines run from each dish to its price, the way the printed menu reads.A dishChoices, quantity, a note, and a line saying a note is confirmed by staff rather than guaranteed.Your orderStill a draft. The bar says, in Thai, that it has not been sent to the kitchen yet.Before sendingTable, dishes, notes and total, with "received" and "accepted by staff" kept apart.TrackingEach step carries the time it actually happened. A skipped step says so instead of inventing one.The billOne bill for the table. Dishes not yet accepted are listed apart from the amount due.Asking for helpCall staff, ask for the bill, ask about allergies. Repeated taps never queue twice.
No. 02
Behind the pass
Kitchen, floor and cashier
Built for a Friday night: big numbers, one clear action per ticket, and anything that needs attention stated in words as well as colour.
The orders boardNew, accepted, preparing, almost done, ready. An allergy note is quoted on a full-width band in the guest's own words, and every button carries an exact count.The floorWhich tables are free, which are eating, which are paying, and what needs attention.One tableThe joining code, every round, the bill, and exactly what still blocks checkout.RequestsGuests calling for staff, and the cuts waiting to be weighed and quoted.What needs doing nowRounds to accept, dishes ready to run, requests open, bills asked for.Sold out tonightOne tap takes a dish off every phone. It stays off until somebody puts it back.What the owner must confirmEvery record came from the restaurant's printed menus. None is approved yet, and the queue says so plainly.Editing a dishThai and English, price with its history, the photo, and the printed source it came from.PaymentsWhat was taken today, by whom, and anything that does not reconcile.
No. 03
What the owner sees
Counted honestly
Every figure says what it counts. Devices are called devices, not people. A dish that was sold out all week is marked as such instead of being called unpopular, and a day with no data looks different from a day with none sold.
Orders by daySeven bars, Monday to Sunday. Today is marked partial, days still to come are not drawn as zero, and the comparison refuses to invent growth from nothing.What sellsMost and least ordered, with how many days each dish was actually available beside it.How guests browseActive time only counts a screen someone is actually using, and the page states what it cannot know.
What these screens are
Captured from the working system, not mocked up. Guest screens are Thai at phone width; staff screens are English on a desktop.
The restaurant, dishes, prices and photographs are Rabbit Grill's own, taken from their printed menus. Nothing has been approved by the restaurant yet, so every screen is marked as demo data and the system refuses to take real orders for unverified dishes.
Orders, tables, staff and history are generated demo data: a seeded year of trading so the charts have something to show.
Everything has been tested on one laptop. No phone on a restaurant network, no hosting and no payment provider has been exercised yet.