Kitchen Display (KDS) App
Overview
The Kitchen Display (KDS) app is the tablet your kitchen and floor staff use to receive orders, prepare them, and bump them off the screen — replacing printed kitchen chits. Orders flow in live from your POS, kiosk, and online ordering as they happen.
The same app serves two roles, decided by the account you log in with:
| Role | Who uses it | What they do |
|---|---|---|
| kds | Kitchen / station staff | See incoming orders, mark items as they're cooked, mark the whole order done. |
| waiter | Runners / servers | See orders the kitchen is finishing, mark items served, run them to the table. |
This is the device side
This page covers operating the KDS tablet. The display accounts, station filters, and eSignage options are created in the admin console — see Kitchen Display (CommerceOS).
The app is built for Quick Service and Full Service outlets. It isn't used on Retail outlets, which have no kitchen flow.
Signing in
Each KDS tablet logs in with its own username and password — the credentials are the pairing. There's no QR or pairing code to enter.
- On the Welcome / Rewardly KDS screen, type the Username and Password. The eye icon on the password field toggles visibility.
- Tap Login.
Only accounts whose type is kds or waiter can sign in. Any other account type is rejected with an Invalid User toast and stays on the login screen. On success you see a Login Success toast and land on the order board.
One login per station
A KDS account can be scoped to certain product categories or tags, so each kitchen station gets its own login — a Drinks screen and a Hot Kitchen screen, for example. Set this up in Kitchen Display (CommerceOS).
Staying signed in
The tablet stays signed in across restarts. The app saves the login token on the device and silently re-validates it on every startup, so a reboot mid-service doesn't force a fresh login. The only way to sign out is the LOG OUT button on the History screen (see History & recall).
Installer-only: environment & updates
Installer setting — leave it alone
Long-pressing the Rewardly logo on the login screen opens a hidden configuration modal. This is for whoever first sets up the tablet — your staff should never need it.
The hidden modal switches which backend the tablet talks to and which update channel it follows:
| Option | What it does |
|---|---|
| Production | Points the tablet at the live Rewardly servers. This is the default on a fresh install. |
| Development | Points the tablet at the staging servers — for Rewardly's own testing only. |
| codepush(production) / codepush(development) | Immediately pulls the app's latest over-the-air bundle from the chosen channel and remembers that channel. |
Switch the environment before logging in. Changing it doesn't sign anyone out, but mixing environments mid-shift will confuse the board.
Automatic updates
The app updates itself over the air. On every cold start and every time it returns to the foreground, it checks for a new version. While downloading or installing, the whole screen is replaced by a splash reading Downloading latest version.. or Installing.., then an Update installed successfully toast.
The app may restart itself mid-service
In production builds updates install immediately — the tablet can restart on its own when a new version ships. It comes back to the board within seconds; nothing is lost, but don't be alarmed by it.
KDS vs waiter: the two roles
The account type decides the theme, which orders appear, and how taps behave.
| kds (kitchen) | waiter (runner) | |
|---|---|---|
| Theme | Gray | Tan |
| Orders shown | Everything not completed, cancelled, or served | Everything not cancelled or served — including orders the kitchen has finished |
| Action buttons | INFORM · CALL # · DONE · MISSED | INFORM · CALL # · SERVED · MISSED |
| Tapping an item | preparing → done (tap again to revert to preparing) | done → served (tap again reverts to its previous status) |
So the kitchen prepares and bumps items to done; the waiter then picks up those done items and marks them served as they run them out.
Waiter order locking
A waiter normally can't open or serve an order until the kitchen has marked at least one of its items done (or the order is already completed or served). Locked orders are dimmed and can't be tapped.
Override: serve preparing orders
A waiter account can carry the access all orders and serve preparing permission (set admin-side). With it, the waiter can open any order regardless of kitchen progress and mark items served straight from preparing, skipping the kitchen's done step. Without it, tapping a still-preparing item does nothing for a waiter.
Station filtering
If a KDS account has categories and/or tags assigned (admin-side), the station only treats matching items as its work:
- Matching items sort to the top of every ticket.
- Non-matching items render dimmed (20% opacity) and can't be bumped — or are hidden entirely when Auto Close Order Tab is on (see Display settings).
- Orders containing no matching items are hidden from the board (when Auto Close is on).
Matching applies to top-level items and to sub-products inside bundles. An account with no categories or tags sees and can bump everything.
This is how a multi-station kitchen is wired — one login per station, each scoped by category or tag.
The ticket board
There are two ways to lay out the board, chosen in Display settings. The board auto-selects the newest applicable order when nothing is selected, and an empty board reads Empty.
Single mode
The default layout. The left third is one expanded ticket — full order detail with the four big action buttons in a 2×2 grid beneath it. The right two-thirds is a grid of small order tiles; tap a tile to swap which ticket is expanded. Above the tiles sit a gear (settings) button and a HISTORY button.
The selected tile is black with white text. Tiles a waiter can't act on yet are dimmed and disabled.
All-expanded mode
Every ticket shows fully expanded in a grid (1–2 rows × 4–6 columns per page). A right sidebar holds page controls — FIRST / NEXT / PREVIOUS / LAST (dimmed at the ends) — plus the HISTORY button, the four action buttons, and the gear.
Tap a card's header to select it. The order number and dining-mode label render at 1.8× size for reading across the kitchen, and each card's item list scrolls on its own.
Batch cooking: tap a total
In all-expanded mode, long-press any product name to highlight every occurrence of that product across all cards and show a running total quantity in the sidebar — "how many laksa total?". Tap the X to clear it. (Long-press does nothing in single mode.)
Splitting big orders
When Max items per card is set (5/8/10/15/20; off by default), an order with more items than the limit is split into multiple virtual cards, numbered .0, .1, and so on after the order number (e.g. 1042.1). With Auto Close on, a split card disappears on its own once all its visible items are done.
What a tile shows
Each order tile carries its identifier and a set of overlay badges:
| Element | Meaning |
|---|---|
| Identifier | Order number — or the Grab ID for Grab orders, or the table number for FSR outlets — with the pager or batch number underneath when present. |
| Dine-in / delivery icon | A circled fork-and-knife for dine-in, a circled scooter for delivery. |
| Missed badge (yellow, top-right) | The order was marked missed. |
| Call (n) badge (white, top-right) | The order has been called, with the call count. |
| Informed badge (bottom-right) | The customer has been notified. |
| Red border | The order has been processing for over 7 minutes — a chase prompt, recalculated every minute. |
What a ticket shows
The expanded ticket header shows the order number (or Grab ID), the status in small italics, the customer name if any, the dining-mode label (TAKEOUT / DINEIN / DELIVERY / GRAB), Table: N or Pager: N when present, the order time, and a live elapsed-minutes counter that refreshes every minute.
Item lines show product name and quantity, with modifier values listed in gray beneath. Bundle items list their sub-products indented, each independently bumpable. Item remarks appear as Remarks: … under the line. Item status is colour-coded:
| Item state | Appearance |
|---|---|
preparing | Black |
done | Green |
served | Strikethrough |
| Voided (quantity 0) | Red strikethrough, marked ×0, not tappable |
Item names show in English
Product and modifier names render from the English (en_US) name only, regardless of the tablet's language.
Display settings
Tap the gear to open the settings popup. Every change applies instantly, jumps back to page 1, and is saved on the device, so it survives restarts. These settings are per-device, not per-account.
| Setting | What it does | Default |
|---|---|---|
| Display mode | Single or All expanded. | Single |
| Rows | Card rows per page — all-expanded only. | — |
| Columns | Card columns per page (4 / 5 / 6) — all-expanded only. | — |
| Font size | SMALL / MEDIUM / LARGE, scaling all ticket text — all-expanded only. | — |
| Max items per card | Off / 5 / 8 / 10 / 15 / 20 — splits big orders — all-expanded only. | Off |
| Auto Close Order Tab | Hide finished work automatically (see below). | On |
Auto Close Order Tab
On a kds station, when Auto Close is on (the default): items that don't belong to this station are hidden from tickets entirely, fully-done sub-products inside bundles are hidden, and any order (or split card) whose visible items are all done drops off the board automatically.
When it's off, foreign items stay visible but dimmed, and finished orders stay on the board until you press DONE.
kds stations only
Auto Close only affects kds accounts. Waiters always see the full list per the waiter filtering rules.
Working a ticket
Bumping items
Tap an item (or a bundled sub-product) to advance its status — preparing → done on a kds station, done → served on a waiter. Tapping again reverts it. Every change syncs live to every other connected screen.
Order action buttons
With an order selected, the four buttons act on the whole order:
| Button | What it does |
|---|---|
| INFORM | Sends the customer an SMS or email that their order is ready. Shows an Order informed toast, adds the Informed badge, and then stays disabled. |
| CALL # | Sets the order to call — putting its number on the customer eSignage board with an audio call-out — and bumps the visible call counter. |
| DONE (kds) | Marks the whole order completed, removes it from the board, and selects the previous order. |
| SERVED (waiter) | Marks the whole order served, removes it, and selects the previous order. |
| MISSED | Sets the order to missed — a yellow badge here, and moves the number to the MISSED column on the eSignage. |
Buttons are disabled while a request is in flight or when no order is selected.
DONE and SERVED ignore item bumps
DONE and SERVED complete the entire order regardless of whether each item was individually bumped. Bump items as you cook for an accurate board, but the order button is what clears it.
History & recall
Tap HISTORY to open the blue history screen — finished orders listed as tiles, with the selected one expanded on the left and a large RECALL button beneath it. A kds station sees completed and served orders; a waiter sees served only. The top bar holds LOG OUT (left), the app version (centre), and BACK (right). Empty reads Empty.
RECALL returns the selected order to the active board — a kds recall sets it back to processing; a waiter recall sets a served order back to completed so it reappears in the waiter queue. Use it when you bump an order too early.
LOG OUT clears the saved login, disconnects, and returns to the login screen. This is the app's only sign-out point.
Sounds & alerts
A chime plays at full volume whenever a new order arrives — it sounds even when the tablet is on silent. A kds station chimes (with a New order - #<number> toast) when a new processing order lands; a waiter chimes when an order becomes ready to run.
No volume control in the app
There's nothing to set up for sounds, and no in-app volume — the chime is fixed at full volume. Use the tablet's own hardware volume.
Other toasts appear at the top of the screen for two seconds: green for success, plus info and error toasts. A failed action shows the server's error message, or Something went wrong if there's none.
Real-time sync & going offline
The board updates live over a socket connection to Rewardly. New orders prepend to the board, status changes land in place, and on every reconnect the app re-pulls the full order list and the latest station configuration — so category changes made admin-side take effect without a sign-out.
A status strip sits above the whole app:
| Strip | Meaning |
|---|---|
| Invisible | Everything's healthy. |
| Red — "You are offline. Check your connection." | No network at all. |
| Gray — "Socket disconnected. Tap to reconnect." | Network's up but the live link is down. Tap it to reconnect; it reads "Socket connecting..." while it tries. |
Offline means stale
While the live link is down the board stops updating and shows old data — there's no local queue. Bump and action attempts simply fail with an error toast until the connection returns. Get the tablet back online before relying on the board.
Full-service (FSR) outlets
On a full-service outlet (the account's operation type is fsr), order tiles lead with the table number as the big identifier instead of the order number, with the batch number (fire batch) underneath. Other outlets show the order number with the pager number beneath when present. Everything else — roles, bumping, the action buttons — works the same.
Related
- Kitchen Display (CommerceOS) — create the display accounts and station filters this app logs in with.
- Customer eSignage — the pickup screen that CALL # and MISSED drive.
- Order Management — the admin view of every order the kitchen sees.
- Online Ordering · Self-Service Kiosk — common sources of kitchen orders.
- Tables — table setup behind FSR table-service.