Pho Kam Long — POS and kitchen display
An iPad point of sale and kitchen display for the restaurant, with its own server and a table-call device.
- Directive
- R-002
- Class
- Client
- Role
- Design and build
- Client
- Pho Kam Long
- Period
- Apr 2026 – Jun 2026
- Status
- In development
The account§ 01
An iPad app built with Expo and React Native for taking orders at the table, running checks, takeaway and reservations, with a kitchen display that times each ticket from the moment it is fired.
Behind it is a Fastify server with PIN sign-in, roles and an audit log, and a sync protocol that keeps the iPads working offline. A small firmware gateway, written in C, lets a table call for service and shows the call on the floor plan until staff answer it.
Outcomes
- Floor plan, checks, takeaway, reservations and waitlist on the iPad.
- Kitchen display with live ticket times.
- PIN sign-in with roles, lockout and an audit log.
- Offline-first sync between the iPads and the server.
- Table-call alerts from a firmware gateway, relayed over MQTT and WebSocket.
Timeline
- POS app begun
- Staff sign-in and roles
- Kitchen display timing
- Offline sync
- Table-call alerts
In figures§ 02
- 5staff roles, from owner to kitchen
- 3languages on the iPad
- 200+commits on the POS app
- Offlinefirst: orders are kept on the iPad and synced after
What it does§ 03
- Floor plan
Every table by area, dining, bar and patio, marked seated, open, to clean or reserved, with its guests, time and running total.
- Checks
Orders taken by seat and by course, fired to the kitchen, split, and paid.
- Kitchen display
Tickets by station, timed from the moment they are fired, marked done from the line.
- Takeaway
Pickup and delivery orders on a board from pending through preparing to ready.
- Bookings
The day's reservations on a timeline, with a waitlist that counts the wait live.
- Staff sign-in
A PIN per person, roles that decide what they can do, lockout after failed tries and an audit log.
- Table call
A button at the table that calls for service; the call shows on the floor plan until someone answers it.
- Floor editor
The room laid out by hand in an edit mode: tables placed, selected together or removed, and the layout saved when the editor closes.
- Three languages
English, French and Vietnamese, chosen in settings and kept on the iPad, with prices formatted for each.
Screens§ 04
How it fits together§ 05
The iPads keep working when the network drops and catch up when it returns.
- Table call deviceFirmware in C, CRC-checked messagesMQTT
- Fastify serverStaff auth, orders, a sync log in PostgresWebSocket · sync
- iPad POS and KDSExpo and React Native, an offline store