Skip to main content

26 — Tablet POS Specification

Surface: iPad or Android tablet (10"–13") used at F&B outlets, spa, and other hotel revenue centres Phase: P2 / R2 Shell: Operator shell (POS variant — minimal chrome, maximised content area) Competitive reference: Lightspeed Restaurant (iPad), Toast POS, Salido, Square for Restaurants


1. Overview

The tablet POS enables hotel F&B (restaurant, bar, room service), spa, and retail revenue centres to process orders and payments, charge to room folio, and manage tables — integrated with the main Melmastoon platform.

Key differentiator vs standalone POS: Native room-to-folio charge integration. A guest's restaurant bill is added directly to their room folio with no manual data entry — the POS looks up the reservation and charges via folio-service.


2. Tech stack

  • React + Vite (same codebase as operator app; separate apps/tablet-pos entry point)
  • Capacitor wrapper for native hardware access (printer, cash drawer, card reader)
  • State: Zustand (order state, cart, table map)
  • Offline: IndexedDB order queue + local menu cache

3. POS layout

┌──────────────────┬───────────────────────────────────────┐
│ [Table map / │ [Order / Cart panel] │
│ Category nav] │ │
│ │ Table 5 — 3 guests │
│ [Tables: 1-12] │ ────────────────────────────────── │
│ OR │ 2x Grilled Kebab $24.00 │
│ [Menu categories │ 1x Naan $3.00 │
│ Food / Drinks │ 1x Chai $2.50 │
│ Specials] │ │
│ │ Subtotal $29.50 │
│ │ Tax (10%) $2.95 │
│ │ Total $32.45 │
│ │ │
│ [Item grid] │ [Pay] [Charge to Room] [Split] [Hold] │
└──────────────────┴───────────────────────────────────────┘

4. Key flows

4.1 Take order

  1. Select table (from table map or number input)
  2. Browse menu categories → tap items to add to order
  3. Item modifiers (e.g., "no onion", "extra sauce") via modifier sheet
  4. Quantities: +/- buttons
  5. Notes: free-text kitchen note per item
  6. "Send to kitchen": order sent to kitchen display system (KDS) via order-service

4.2 Payment

Options:

  • Cash: Enter tendered amount; display change due; open cash drawer
  • Card (terminal): Adyen P400 prompt; EMV + contactless
  • Tap-to-Pay: iPhone (iOS 16+) or Android (Google TapToPhone)
  • Charge to room: Look up guest by room number or name → post to folio-service.addCharge() → guest signs on tablet

4.3 Split bill

  • Split equally by N guests
  • Split by item (guest selects their items)
  • Split by amount (custom amounts)

4.4 Table management

  • Table map overview: vacant / occupied / flagged for cleaning
  • Merge tables (for large groups)
  • Move order to another table
  • Time-at-table indicator (for turnover management)

4.5 Room service

  • Select "Room service" mode (no table; enter room number)
  • Delivery time estimate shown to staff
  • order-service sends push notification to room service runner (via notification-service)

4.6 Refund / void

  • Void item (before kitchen send): free
  • Void after kitchen send: manager PIN required; kitchen notified
  • Refund (after payment): manager PIN; Adyen reversal

5. Menu management

Operator-managed via desktop app (not on POS tablet directly). POS pulls menu from menu-service on startup and every 15 min:

  • Categories + items + prices
  • Availability (86'd items shown dimmed)
  • Modifiers and modifier groups
  • Happy hour / time-based pricing (auto-applied by POS)
  • Multi-language menu (displayed in operator's language; LocaleString support)

6. Kitchen display system (KDS) integration

Orders sent to KDS via order-service event order.created:

  • KDS displays orders on kitchen screen (separate display; browser-based)
  • Kitchen marks items "ready" → POS shows "Ready for delivery" notification
  • POS is not the KDS — this spec covers only the ordering/payment surface

7. Hardware requirements

ComponentRequirement
Display10"–13" iPad or Android tablet; landscape preferred
Receipt printerStar Micronics TSP143 (Bluetooth / LAN) — supported via Capacitor plugin
Cash drawerAPG VB320 connected via printer port
Card terminalAdyen P400 (Bluetooth or LAN)
Kitchen printerSeparate device; receipt printer in kitchen for backup (if KDS fails)

8. Offline behaviour

ScenarioHandling
Network downOrders saved locally; sent to kitchen printer (if network down, use local WiFi LAN printer)
folio-service unreachableCharge-to-room disabled; cash/card only
Menu service unreachableLast-cached menu used; staff alerted

9. Accessibility

  • Touch targets ≥ 44×44 px
  • High contrast mode for low-light kitchen/bar environments
  • Font size ≥ 16px minimum (staff reading in dim conditions)
  • Audio feedback for order sent (sound + haptic)

10. Performance budgets

MetricTarget
App launch to first order≤ 2 s
Item tap to cart update≤ 100 ms
"Send to kitchen" confirmation≤ 500 ms
Payment terminal response≤ 3 s
Receipt print≤ 5 s

References