All work

GoldSyntax Lab · Featured product

From a QR scan at the table to the tab — one real-time system.

CafeSystem brings a cafe's four roles — guest, waiter, kitchen and owner — together in one real-time system. The guest scans the QR at the table and orders without installing anything; the order lands on the kitchen screen and the waiter's board instantly. The interface is in Turkish, as it's built for local cafes.

Type
Our own product
Year
2026
Stack
Next.js 16 · Supabase
Platform
Web · PWA
Menu — category tabs and product images

The problem

In small and mid-sized cafes, orders get lost between paper tabs, spoken hand-offs and a waiter's memory. At peak hours tables get mixed up, the kitchen doesn't know what's queued, and splitting a bill takes forever. The goal: a lightweight but sturdy flow that runs on everyone's own phone and browser — no expensive POS terminal.

The approach

No setup for the guest — the QR opens a browser tab, that's it. The staff side runs in real time: when an order is created, the waiter board, the kitchen screen and the guest's status card all update at once. Money is stored in cents (integer), so there are no rounding errors. Each cafe runs in its own isolated deployment (white-label).

Four roles, one flow

The same order's lifecycle, shown to each role through its own interface.

Guest — from the table, no install

Scan the QR, browse the menu, customize items with options, add to cart, leave a note and send. Then track the order status (preparing → ready) live; call a waiter or ask for the bill.

Menu — category tabs and product images
Item with options — customization sheet
Cart and sticky cart bar
Adding a note to the order
Live status card after confirmation
Call waiter / Ask for the bill

Waiter — three-column board

Every table on one screen: new orders, open tabs and service calls. Tap a table, see the tab, take partial payment by line item, add a tip, move a table or merge two.

Waiter board — three-column view
Table grid — occupancy at a glance
Table detail — open tab
Service-call notifications

Kitchen — order wall (KDS)

Incoming orders drop onto the kitchen screen as cards and advance as they're prepared. If a receipt printer is connected, an 80mm kitchen ticket prints automatically.

Kitchen order wall (KDS)

Owner — menu and control

Manage products, prices and images; generate tables and QR codes; pull the end-of-day revenue report; toggle features on and off. No technical knowledge required.

Owner — product table with thumbnails

Feature deep-dive

The details that actually run a cafe — daily use, not a showcase.

Thermal receipt printing (80mm)

The tab and the kitchen ticket print in the standard 80mm thermal format — straight from the browser's print preview.

Tab receipt — 80mm thermal
Kitchen ticket — 80mm thermal

Partial payment by item & tip

Line items on a tab can be selected and paid separately; split bills and tips are handled in one flow.

Partial payment by line item
Adding a tip

Move & merge tables

An open tab can be moved to another table, or two tables merged into one — when a group relocates, the screen changes, not the data.

Move / merge tables

Product image upload

The owner uploads a photo to a menu item — with a drag-and-drop zone, upload state, preview and type/size validation. Images live in storage and appear on the menu instantly.

Robustness & states

What separates a product from a demo isn't the happy path; it's the empty, slow and disconnected moments. All designed.

Loading skeletons

On a slow connection you get a skeleton that gives the page its shape, not a blank jump — for the menu, the board and the owner table.

Owner menu loading skeleton
Board loading skeleton
Menu loading skeleton (slow connection)

Empty states

An empty cart and an empty kitchen wall read as calm screens that tell you what to do, not as errors.

Empty kitchen wall
Empty cart state

Errors & edge cases

Wrong PIN, invalid QR, a closed table and a dropped connection — each is met with a clear message that never leaves the user stuck.

Invalid QR — full-page notice
Closed table — full-page notice
Connection-lost banner
Wrong PIN — login error

Tech & architecture

Built on Next.js 16 (App Router, TypeScript, Turbopack); data, real time and file storage come from Supabase (Postgres). The interface is a PWA — add it to your phone and it opens like an app.

At its heart, the real-time layer detects a dropped connection and refreshes state on reconnect, so screens don't drift apart during a busy service. Each cafe runs in its own isolated deployment (silo) — white-labeled, separate data.

  • Real-time shared cart — multiple devices, one order
  • Disconnect-resilient realtime (auto-reconnect + refresh)
  • Money in cents (integer) — no rounding errors
  • Isolated deployment per cafe (white-label)
  • PWA · accessibility · 404 & error-boundary polish

Want a product of your own?

We can design and build an end-to-end product like CafeSystem for you too. Tell us about your idea.