Case study
Sancha Renjia: from handwritten orders to live printed bills
This is the only restaurant project I have taken all the way through and left running. Every technical choice and interface on this page comes from that project.
How it used to be
- Customers ordered and staff wrote it down; at peak, orders were chased across the room
- The kitchen was told by shouting; if the shout was missed, the order waited
- End-of-day reconciliation relied on memory and feel
Three pieces of work
Customer app
A native Android app: scan the table code, tap dishes, submit — with a pickup number for the customer.
Backend
Cloudflare Workers handle orders and access control; D1 stores orders and accounts. Staff and customers read the same data.
Printing
Integrated with Feie cloud printing: the kitchen receipt prints on its own and order status is reported back live.
How one order travels
From the customer scanning the code to the receipt coming out, nobody has to relay messages. Below is a real order’s event stream.
The owner of Sancha Renjia used to write every order by hand at peak hours — customers rushing, the kitchen shouting, and books that never quite added up. I turned that workflow into a system: customers order by QR code, the kitchen receives orders live, and the receipt prints itself.
- 14:02:11Order placed
Table A-12 · 4 items · ¥84.00
- 14:02:12Kitchen received
Pickup #A12 · Printer 1
- 14:02:14Receipt printed✓
Feie printer 1 · ¥84.00
What the system looks like
The three screens below were rebuilt for this site — go ahead and use them.
Technical details
- Customer app
- Native Android
- Backend
- Cloudflare Workers (TypeScript)
- Database
- Cloudflare D1 (SQLite)
- Printing
- Feie cloud print API
- Hosting
- Cloudflare edge network, no fixed server
How it is now
- Customers finish ordering and the kitchen receipt prints itself — nobody has to shout
- Adding or changing a dish syncs to every screen, so there is only ever one menu
- Every order has a time and an amount; checkable and reconcilable at any moment
The interfaces on this page are a rebuilt demo of that project, shown to explain the flow and interactions. The version actually running in the shop is the one that counts.
Where is your project stuck right now?
Not sure whether to build it, what it might cost, or why the last developer stopped — all fine starting points. The first conversation is free.