Skip to main content
The Kitchen Display System (KDS) is the digital pass. Every ticket that would have been shouted, hand-written, or printed on flimsy paper appears on the screen the moment a waiter or cashier sends it, sorted by station, colour-coded by urgency, and mirrored across every device on the network.

Overview

Each ticket the KDS receives contains:
  • Table name or takeaway reference at the top
  • Order number (timestamp-based, e.g. 14:32) and the sender’s name
  • Every item with quantity, modifiers, and any special notes the waiter added
  • A live prep timer that starts on receipt and colour-shifts as it ages
  • The station the item belongs to (Hot Kitchen, Cold, Bar, Grill, etc.)
Tickets are grouped by table session — a single table’s items stay together on one card, even when the waiter fires additional courses later.

How orders reach the KDS

DishInk uses a five-layer delivery chain so tickets get through even when the internet does not:
1

Waiter or cashier taps Send to Kitchen

The order is written to the table_order_items table with kds_status = sent_to_kitchen.
2

Realtime push

A Supabase realtime channel (waiter_kds_${restaurantId}) fans the change out to every subscribed KDS, POS, and Waiter device in milliseconds.
3

LAN side-car broadcast

In parallel, the sender broadcasts the ticket over the local Wi-Fi network so devices on the same LAN see it even if the cloud is slow or down.
4

Kitchen print queue (optional)

If a kitchen printer is configured for the item’s station, a docket is queued to kitchen_print_queue and printed automatically.
5

Offline queue fallback

If both cloud and LAN fail, the order is stored in the device’s offline queue and syncs the moment connectivity returns.
The receiving KDS never has to poll. New tickets and status changes arrive by push. If a KDS ever gets out of sync, tap the refresh icon in the header — this calls fetchItems() directly.

Automatic station routing

Every menu category can be assigned to one or more kitchen stations (see Kitchen Statuses and the Kitchen Stations settings panel). When an item is sent:
  1. DishInk looks up the item’s menu category.
  2. The category is matched to a station via the station’s category_ids list.
  3. If a match is found, the item is stamped with kds_station = the station’s display name.
  4. If no station is assigned, the item shows under its category name as a virtual station.
  5. If a category is assigned to multiple stations, the first matching station wins.
Use the station filter bar at the top of the KDS to view one station at a time. All shows every ticket in the house; tapping a station chip narrows to just that section.
Receive orders

KDS ticket board — Hot Kitchen filter active

Reading a fresh ticket

A new ticket lands with the sent_to_kitchen status. Read it from the top down:
  1. Table — where the food is going
  2. Time — when the ticket was fired (24-hour clock)
  3. Waiter — who to speak to about clarifications
  4. Items — quantity first, then item name in capitals so it is legible from a metre away
  5. Modifiers — indented with a + (e.g. + Extra Cheese)
  6. Notes — indented with a ! and bolded (e.g. ! No onions, ! Allergy: nuts, ! Cut in half)
The kitchen ticket never shows prices. This is deliberate — the kitchen sees what to cook, not what it costs.

Alerts and sound

  • Every new ticket plays an audible chime. Use the Volume button in the KDS header to test the sound.
  • If a station has a queue alert configured (e.g. 15 minutes), the KDS flashes a warning when any item at that station sits in the queue for longer than the threshold without anyone tapping Preparing.
  • Tickets that pass their prep-time target (prep_started_at + prep_time_target_minutes) are flagged Overdue and shown in red.

Offline behaviour

If the KDS loses internet:
  • The header pill switches from Online (emerald) to Offline (red, pulsing).
  • The Connection Banner appears just below the header explaining what will happen.
  • Existing tickets remain fully readable and interactive.
  • Any status changes you make are queued locally, shown as X QUEUED in the header, and synced when the internet returns.
  • LAN-connected devices continue to broadcast updates to each other over Wi-Fi.
A KDS device that is fully powered off during an outage will not receive new tickets. Keep at least one screen powered and on the LAN.

Tips and best practices

Configure a station for every physical section of the kitchen — Hot, Cold, Grill, Bar, Prep — and assign the right menu categories to each. This turns the KDS from a single wall of tickets into a per-cook dashboard.
Set a queue alert of 10–15 minutes on your busiest station. The flashing warning is the earliest signal a shift is starting to fall behind.
In multi-location deployments, kitchen stations are shared config and follow the home restaurant. Order data (tickets) is scoped to the active branch. See Multi-Location.

Common mistakes

Do not silence the chime permanently. A silent kitchen misses tickets during service — always leave sound on and acknowledge within 30 seconds of arrival.
Do not leave menu categories unassigned. Items with no station show under their category name and are easy to miss when a cook filters to their station.
Do not assign the same category to two stations unless you understand the routing rule — only the first matching station receives it.
Last modified on July 19, 2026