Project context
Small and mid-sized restaurants used one tablet per delivery platform, a notebook for phone orders and a separate till for the dining room. Missed orders, mixed-up tickets and end-of-day cash mismatches followed.
The goal: reduce all channels to one data model, track every order on one board, run in the browser without installation and keep many restaurants safely separated on the same infrastructure.
Architecture and data flow
- Channel adapters: platform, QR, phone, table and counter orders are written to a shared order table with the same fields; the channel is stored separately.
- Order hub: orders move through awaiting approval, preparing, on the way and completed on a board or list; new orders trigger a sound, delays are flagged automatically.
- Kitchen: item-level preparation screen and automatic 80 mm thermal receipts.
- Courier and payment: courier assignment, cash on delivery and end-of-day reconciliation.
- Feedback: state changes on platform orders are sent back to the platform.
Each restaurant is isolated by its tenant ID; every query runs with a tenant filter.
Engineering challenges and solutions
Different channels, one order model
Platform orders, QR orders and table tickets carry different fields. All were normalized into a common order and line structure, with channel, external reference and payment type in extra fields, so kitchen, courier and reporting modules work regardless of channel.
State synchronization
An order prepared in the kitchen must show the right state on the courier screen, the till and the platform at the same time. State transitions go through one service and each transition is timestamped; delay calculations come from that history.
Multi-tenant security
Many restaurants share one database. The tenant ID comes from the session, never from client input, and menu, stock, order and report queries are all scoped to it.
No installation
The system runs in the browser and installs as a PWA; the same interface works on desktop, tablet and phone, and menu changes reach the QR menu and till instantly.
The resulting system
Restaurants see orders from every channel on one panel, with live cards for daily sales, unpaid orders, delays and channel mix. They can explore a demo account and sign up to open their own restaurant. The retail side of the same product family is the iPhone POS app CepKasa on the App Store.
A sixth channel: Kassa Yemek
Because the order model is channel-independent, a customer-facing food ordering marketplace was built on the same infrastructure: Kassa Yemek. Customers pick their address, see restaurants that deliver there and order at menu prices with no platform fee. Orders are written into the restaurant's existing order hub; delivery zones, minimum basket and campaigns are read from the restaurant's own panel. Restaurants apply for free.

Technology stack
Related product and service
Go to the product page: Kassa Restaurant
Frequently asked questions
Is installation required?
No. Kassa Restaurant runs in the browser with the same interface on desktop, tablet and phone.
How do delivery platform orders arrive?
Orders from Yemeksepeti, Getir Yemek and Trendyol Yemek land in the order hub automatically, and state changes are sent back to the platform.
Can several branches or businesses use the same system?
Yes. It is multi-tenant; each business's data is separated by its tenant ID.