How Kwentra Orders works
Guests scan the QR code in their room to order in-room dining, order from the pool lounge, or book the spa or gym. Every order goes through a workflow: each stage belongs to one staff role, has a target time, and has a label the guest sees. Everything updates live on every screen. Orders are charged to the room tab.
Who uses it
| Role | Sign-in email | Opens on | Screens |
|---|---|---|---|
| Guest | No account: room QR code + last name | Guest app | Menu, cart, tracking, spa and gym booking, my orders |
| Kitchen | kitchen@nakheel.demo | Kitchen | Kitchen |
| Runner | runner@nakheel.demo (also runner2@, runner3@) | Runner | Runner |
| Front desk / concierge | frontdesk@nakheel.demo | Live orders | Live orders, Dispatch, Stays |
| Manager | manager@nakheel.demo | KPIs | All screens |
| Admin | admin@nakheel.demo | KPIs | All screens |
Passwords are not shown anywhere in the app. They are the Railway variables SEED_ADMIN_PASSWORD, SEED_MANAGER_PASSWORD, SEED_KITCHEN_PASSWORD, SEED_RUNNER_PASSWORD (used by all three runners) and SEED_FRONTDESK_PASSWORD (project kwentra-orders → service app → Variables). Change a variable and redeploy to change the password.
The order lifecycle (default in-room dining workflow)
| # | Stage | Owner (moves it on) | Target | Guest sees |
|---|---|---|---|---|
| 1 | New | Kitchen | 2 min | Order received |
| 2 | Preparing | Kitchen | Longest dish prep (fallback 15 min) | Preparing |
| 3 | Ready for pickup | Runner | 5 min | Still “Preparing” (hidden from the guest) |
| 4 | Out for delivery | Runner | 6 min | On its way |
| 5 | Delivered | — | — | Delivered |
- Only the owner of the current stage can move an order to the next stage (managers and admins can act on any stage). If two people click at once, the second click is rejected and the screen refreshes.
- The last stage is Delivered. To reach it the runner picks an outcome: handed to guest, or left at the door. “Guest not in room” keeps the order at Out for delivery and flags it on the front desk board.
- Preparing has no fixed target: it is the longest prep time among the order’s dishes (each dish’s prep time is set in Menu). An order of shakshuka (12 min) and mixed grill (28 min) gets 28 minutes. If no dish has a prep time, the workflow’s number (15 min) applies.
- Timers: white while on time, amber after 75% of the stage target, red and blinking once past it.
- The promise to the guest is the sum of the stage targets for that order, so it follows the dishes ordered. The guest sees the arrival time based on it.
- Stages with “show to guest” off are hidden from the guest, who keeps seeing the previous label (for example, “Ready for pickup” still shows as “Preparing”).
- Each outlet uses its own workflow. The pool lounge has shorter targets.
Guest steps
- Scan the QR code in the room. The page shows the room number.
- Type the last name on the stay. It must match the guest checked in to that room (stays come from Kwentra HMS); the code does nothing for an empty room.
- Home: choose In-room dining, Pool lounge, Spa or Gym. Use عربي / EN to switch language at any time.
- Menu: browse by category, tap a photo for details, add items. The cart shows the total with 15% VAT already included.
- Cart: add allergies (shown in red to the kitchen) and a special request, then Place order.
- Tracking updates live with each stage and its time. A banner on the home screen shows any open order.
- My orders: open and past orders, spa and gym bookings and their status.
Staff screens
- Kitchen
- One lane per kitchen-owned stage (New, Preparing), plus a lane for orders waiting for a runner. Each ticket shows room, items, notes, allergy, a timer against the stage target, and one button to move it on. Filter by station (hot, cold, pastry, drinks); tap an item to strike it through. The side panel shows all-day item counts and runner status. On a phone the lanes become tabs.
- Runner
- Tabs for each runner-owned stage and Delivered. “Accept & pick up” takes an unassigned order and moves it to Out for delivery; “Arrived — confirm delivery” asks for the outcome. Runners see unassigned orders and their own.
- Dispatch
- Orders waiting for a runner, oldest first, with wait time. Select an order, then a free runner, to assign it. Shows runner load and recent activity.
- Live orders
- Every open order across all rooms. Search by room, guest or order number; filter by In kitchen, Ready / out, Needs attention (late or guest not in room) and Delivered. The detail panel shows the timeline, what the guest sees, and what to tell them if they call. The Bookings tab confirms or declines spa and gym requests.
- Stays
- Read-only: check-ins, check-outs and guest details come from Kwentra HMS. Shows every room, who is staying, VIP, check-out date and the room tab (orders and confirmed bookings).
- Room QR codes
- Stays → Print room QR codes. One permanent code per room; print all rooms or one.
- KPIs
- Calculated from the order event log: order count, order-to-delivery time, % on time against the promise, kitchen prep time, wait at the pass, revenue posted to room tabs, time per stage against target, orders by hour, by outlet, by staff member. Compare today, 7 days or 30 days with the period before.
- Workflows
- Create a workflow (from “Runner delivers” or “Chef delivers”) and rename it. Edit its stages: names in English and Arabic, owner role, target minutes or “target from dish prep times”, guest label in both languages, whether the guest sees it, and whether delivery needs an outcome. Publishing creates a new version; new orders use it at once, and orders in progress keep their version. Which outlet uses which workflow is set in Menu → Outlet settings.
- Menu
- Everything guests can order or book. Per outlet: name, subtitle, hours, typical delivery time, photo and workflow; for the spa and gym, the sections (such as Ladies’ hours) with their time slots and bookings per slot. Dishes: add, edit (names and descriptions in both languages, price in SAR incl. VAT, prep time, station, category, tags, photo), mark sold out, or remove. Spa and gym services: add, edit (name, duration, price, photo) or remove. Guests see changes immediately; removed items stay on past orders.
Spa and gym bookings
- Spa: separate Ladies’ and Gentlemen’s sections. Treatments are given by a therapist of the same gender. 2 bookings per time slot per section.
- Gym: Ladies’ hours 09:00–13:00 and 16:00–20:00 (women only, female trainers); Gentlemen’s hours 06:00–09:00, 13:00–16:00 and 20:00–24:00. 6 bookings per slot.
- The guest picks the service, section, day (today plus 4 days) and a free time. Full or past slots are greyed out.
- The request appears under Live orders → Bookings. Confirm or decline; the guest’s My orders updates live.
Prices and the room tab
- Prices are in SAR and include 15% VAT; there is no service charge.
- Orders and confirmed bookings are added to the room tab, shown on Stays. Settle it with the guest at check-out in HMS.
- There are no payments, invoices or PMS connection in this version.
Alerts and sign-in
- Tap “Enable alerts” once per device: new work for your role plays a chime, vibrates the phone, and shows a system notification when the tab is in the background.
- “Keep screen on” stops a kitchen tablet or runner phone from sleeping while the app is open. Alerts only work while the app is open.
- Staff sessions end after 30 minutes without activity, and always after 12 hours. The browser then goes to the sign-in screen by itself. A screen with “Keep screen on” enabled counts as active.
- A guest’s access ends when HMS checks them out; the guest app then asks them to scan the QR code again.
Try the full flow in 5 minutes
- Front desk: Stays → Print room QR codes, and open room 1204’s link on a phone (guest Ms. Haddad is checked in there).
- Guest (phone): enter the last name Haddad, then order a dish with an allergy note.
- Kitchen (second window): the ticket appears with a chime; press the button twice to move it through New and Preparing.
- Runner (phone): Accept & pick up, then Arrived — confirm delivery → Handed to guest. The guest's tracking updates at every step.
- Front desk: the order shows as Delivered on Live orders. Manager: KPIs → Today now counts it.
Limits of this version
- Staff alerts work only while the app is open; locked iPhones pause them.
- Staff accounts are fixed (seeded); there is no screen to add staff.
- Stays are read-only and not yet connected to HMS: the demo uses the seeded guests (rooms 312, 721, 806, 907, 1204, 1406, 1510 and cabana C4).
- Anyone with a room's QR code and the guest's last name can order to that room.
- The order history and staff names are demo data.