What Was Actually Broken
The restaurant had no digital ordering system. Staff were taking orders manually, tracking stock by memory, and handling cash payments with no running total. During busy service, orders got confused, stock ran out without warning, and the payment process slowed everything down.
Three operational failures needed fixing: ordering speed, real-time stock visibility, and payment tracking. The solution had to work for non-technical staff and require no internet dependency — the system needed to run even if connectivity dropped.
What I Was Working With
How It Was Built
Both frontend and backend ran locally on the same machine during the event. Customers connected over the restaurant's WiFi and accessed the ordering interface directly from their own phones — no app install, no account required.
The decision to run everything on LAN was deliberate. It meant minimal latency on order submission, no dependency on external services, and the system continued operating when the internet dropped mid-event.
System in Operation
Screenshots from the live deployment — customer ordering flow, QR checkout, and the admin order queue.
What Broke During Service
Three incidents occurred during the live event. All were resolved without taking the system offline.
What Was Sacrificed
What I'd Build Differently
What Happened
The system was deployed during a live restaurant event. Order volume exceeded what was expected. Two bugs were found and fixed while service was running — neither required taking the system offline. The internet dropped mid-event and the system continued without interruption.
The kitchen ran out of food before the system ran out of capacity. That was the real test.
Known limitations remain: no persistent storage, no authentication, manual startup, no offline fallback if the local server crashes. Those are the next things to fix before the next deployment.