@company-manager/docs

Kitchen Display System

Kitchen order flow, station routing, and order preparation diagrams

Kitchen Display System

This page covers the kitchen display system (KDS) workflow including order routing, station management, and preparation tracking.

KDS Architecture

flowchart TB
    subgraph "Order Entry"
        POS1[POS Terminal 1]
        POS2[POS Terminal 2]
        KIOSK[Self-Order Kiosk]
        ONLINE[Online Orders]
    end

    subgraph "Routing Engine"
        ROUTER[Order Router]
        RULES[Routing Rules]
    end

    subgraph "Kitchen Stations"
        GRILL[Grill Station]
        FRY[Fry Station]
        PREP[Prep Station]
        EXPO[Expo Station]
    end

    subgraph "Display Screens"
        KDS_GRILL[Grill KDS]
        KDS_FRY[Fry KDS]
        KDS_PREP[Prep KDS]
        KDS_EXPO[Expo KDS]
    end

    POS1 --> ROUTER
    POS2 --> ROUTER
    KIOSK --> ROUTER
    ONLINE --> ROUTER

    ROUTER --> RULES
    RULES --> GRILL
    RULES --> FRY
    RULES --> PREP

    GRILL --> KDS_GRILL
    FRY --> KDS_FRY
    PREP --> KDS_PREP

    GRILL --> EXPO
    FRY --> EXPO
    PREP --> EXPO
    EXPO --> KDS_EXPO

    style ROUTER fill:#e1f5fe
    style EXPO fill:#e8f5e9

Order Item States

stateDiagram-v2
    [*] --> PENDING: Order Placed

    PENDING --> SENT: Send to Kitchen
    SENT --> ACKNOWLEDGED: Station Acknowledges
    ACKNOWLEDGED --> PREPARING: Start Preparation

    PREPARING --> READY: Finished Cooking
    PREPARING --> HELD: Hold Request

    HELD --> PREPARING: Resume

    READY --> BUMPED: Bump from Station
    BUMPED --> EXPO_QUEUE: Queue at Expo

    EXPO_QUEUE --> PLATED: Plating Complete
    PLATED --> SERVED: Picked Up

    SERVED --> [*]

    note right of PREPARING
        Timer tracking
        cook time
    end note

    note right of EXPO_QUEUE
        Waiting for
        all items
    end note

Order Routing Logic

flowchart TD
    ORDER[New Order Items] --> ANALYZE[Analyze Items]

    ANALYZE --> LOOP{More Items?}
    LOOP -->|Yes| ITEM[Get Next Item]

    ITEM --> CATEGORY[Check Category]
    CATEGORY --> STATION_MAP[Map to Station]

    STATION_MAP --> GRILL{Grill Item?}
    GRILL -->|Yes| ROUTE_GRILL[Route to Grill]

    STATION_MAP --> FRY{Fry Item?}
    FRY -->|Yes| ROUTE_FRY[Route to Fry]

    STATION_MAP --> PREP{Prep Item?}
    PREP -->|Yes| ROUTE_PREP[Route to Prep]

    STATION_MAP --> BAR{Bar Item?}
    BAR -->|Yes| ROUTE_BAR[Route to Bar]

    ROUTE_GRILL --> PRIORITY[Calculate Priority]
    ROUTE_FRY --> PRIORITY
    ROUTE_PREP --> PRIORITY
    ROUTE_BAR --> PRIORITY

    PRIORITY --> SEQUENCE[Sequence Items]
    SEQUENCE --> LOOP

    LOOP -->|No| SEND[Send to Stations]
    SEND --> DISPLAY[Display on KDS]

    style SEND fill:#e8f5e9

Kitchen Display Sequence

sequenceDiagram
    participant POS as POS Terminal
    participant API as Kitchen API
    participant Router as Route Engine
    participant Station as Kitchen Station
    participant KDS as KDS Screen
    participant Expo as Expo Station

    POS->>API: Send order to kitchen
    API->>Router: Route order items

    Router->>Router: Apply routing rules
    Router->>Router: Calculate priorities

    loop For each station
        Router->>Station: Assign items
        Station->>KDS: Display items
        KDS-->>Station: Acknowledged
    end

    Station->>KDS: Start item (touch)
    Note over KDS: Timer starts

    Station->>KDS: Complete item (bump)
    KDS->>API: Item ready
    API->>Expo: Notify expo

    Expo->>Expo: Wait for all items
    Expo->>Expo: Plate order
    Expo->>API: Order ready
    API->>POS: Notify server

Station Workflow

flowchart TD
    subgraph "Station Display"
        QUEUE[Order Queue]
        CURRENT[Current Items]
        READY[Ready Items]
    end

    NEW[New Item Arrives] --> QUEUE
    QUEUE --> PRIORITIZE[Prioritize by Time/Type]

    PRIORITIZE --> DISPLAY[Show on Screen]
    DISPLAY --> COOK_START{Cook Starts?}

    COOK_START -->|Touch Item| CURRENT
    CURRENT --> TIMER[Start Cook Timer]

    TIMER --> ALERT{Near Done?}
    ALERT -->|Yes| NOTIFY[Audio Alert]
    ALERT -->|No| CONTINUE[Continue Timer]
    CONTINUE --> TIMER

    NOTIFY --> DONE{Item Done?}
    DONE -->|Bump| READY
    DONE -->|No| CONTINUE

    READY --> EXPO_NOTIFY[Notify Expo]

    subgraph "Item States on Screen"
        NEW_COLOR[New - White]
        COOKING_COLOR[Cooking - Yellow]
        LATE_COLOR[Late - Red]
        READY_COLOR[Ready - Green]
    end

Expo Station Flow

flowchart TD
    ITEMS[Items Arriving] --> GROUP[Group by Order]

    GROUP --> ORDER_VIEW[Order View]
    ORDER_VIEW --> STATUS{All Items Ready?}

    STATUS -->|No| WAITING[Show Waiting Items]
    WAITING --> HIGHLIGHT[Highlight Missing]
    HIGHLIGHT --> STATUS

    STATUS -->|Yes| COMPLETE[Order Complete]
    COMPLETE --> ALERT_EXPO[Alert Expo Staff]

    ALERT_EXPO --> PLATE[Plate Order]
    PLATE --> QUALITY[Quality Check]

    QUALITY --> PASS{Pass Check?}
    PASS -->|No| REMAKE[Request Remake]
    REMAKE --> WAITING

    PASS -->|Yes| GARNISH[Final Garnish]
    GARNISH --> RUNNER[Call Runner]

    RUNNER --> PICKUP[Mark Picked Up]
    PICKUP --> SERVE[Serve to Table]

    SERVE --> BUMP[Bump Order]

    style BUMP fill:#e8f5e9

Order Priority System

flowchart TD
    subgraph "Priority Factors"
        TIME[Order Time]
        VIP[VIP Table]
        RUSH[Rush Order]
        COURSE[Course Timing]
    end

    TIME --> CALC[Calculate Priority Score]
    VIP --> CALC
    RUSH --> CALC
    COURSE --> CALC

    CALC --> SCORE[Priority Score]

    SCORE --> HIGH{Score > 80?}
    HIGH -->|Yes| RED[Display RED]

    SCORE --> MEDIUM{Score 50-80?}
    MEDIUM -->|Yes| YELLOW[Display YELLOW]

    SCORE --> NORMAL{Score < 50?}
    NORMAL -->|Yes| WHITE[Display WHITE]

    subgraph "Color Coding"
        RED --> URGENT[Urgent - Do First]
        YELLOW --> SOON[Attention Needed]
        WHITE --> QUEUE_NORMAL[Normal Queue]
    end

Course Firing

sequenceDiagram
    participant Server as Server
    participant POS as POS System
    participant Kitchen as Kitchen
    participant KDS as KDS Display

    Server->>POS: Enter full order (3 courses)
    POS->>Kitchen: Send order with course marks

    Note over Kitchen: Course 1: Appetizers
    Kitchen->>KDS: Display appetizers
    KDS->>Kitchen: Appetizers ready
    Kitchen->>Server: Course 1 ready

    Server->>POS: Fire Course 2
    Note over Kitchen: Course 2: Entrees
    POS->>Kitchen: Fire entrees
    Kitchen->>KDS: Display entrees
    KDS->>Kitchen: Entrees ready
    Kitchen->>Server: Course 2 ready

    Server->>POS: Fire Course 3
    Note over Kitchen: Course 3: Desserts
    POS->>Kitchen: Fire desserts
    Kitchen->>KDS: Display desserts
    KDS->>Kitchen: Desserts ready
    Kitchen->>Server: Course 3 ready

Item Modification Display

flowchart TD
    ITEM[Order Item] --> HAS_MODS{Has Modifiers?}

    HAS_MODS -->|No| STANDARD[Standard Display]
    HAS_MODS -->|Yes| SHOW_MODS[Show Modifiers]

    SHOW_MODS --> MOD_TYPE{Modifier Type}

    MOD_TYPE --> ADD[Additions]
    MOD_TYPE --> REMOVE[Removals]
    MOD_TYPE --> SPECIAL[Special Requests]
    MOD_TYPE --> ALLERGY[Allergy Alert]

    ADD --> GREEN_TEXT[Green Text: +Bacon]
    REMOVE --> RED_TEXT[Red Text: NO onions]
    SPECIAL --> YELLOW_TEXT[Yellow Text: Extra crispy]
    ALLERGY --> FLASH[Flashing Alert: ALLERGY]

    GREEN_TEXT --> DISPLAY[Final Display]
    RED_TEXT --> DISPLAY
    YELLOW_TEXT --> DISPLAY
    FLASH --> DISPLAY

    STANDARD --> DISPLAY

    subgraph "Display Example"
        EXAMPLE["BURGER #42
        +Bacon
        NO onions
        MED-RARE
        ⚠️ PEANUT ALLERGY"]
    end

Kitchen Timing Metrics

flowchart LR
    subgraph "Time Metrics"
        TICKET[Ticket Time]
        PREP[Prep Time]
        COOK[Cook Time]
        EXPO[Expo Time]
        TOTAL[Total Time]
    end

    subgraph "Targets"
        T_TICKET[Target: 2 min]
        T_PREP[Target: 3 min]
        T_COOK[Target: 8 min]
        T_EXPO[Target: 2 min]
        T_TOTAL[Target: 15 min]
    end

    TICKET --> T_TICKET
    PREP --> T_PREP
    COOK --> T_COOK
    EXPO --> T_EXPO
    TOTAL --> T_TOTAL

    subgraph "Alerts"
        WARN[Warning at 80%]
        CRITICAL[Critical at 100%]
        OVERDUE[Overdue > 100%]
    end

Kitchen Display Data

erDiagram
    KITCHEN_ORDER ||--o{ KITCHEN_ITEM : contains
    KITCHEN_ITEM }o--|| STATION : routed_to
    STATION ||--o{ KDS_DISPLAY : shows_on

    KITCHEN_ORDER {
        string id PK
        string transactionId FK
        string tableNumber
        int guestCount
        enum orderType
        enum status
        int priority
        timestamp receivedAt
        timestamp completedAt
    }

    KITCHEN_ITEM {
        string id PK
        string orderId FK
        string stationId FK
        string productName
        int quantity
        json modifiers
        enum status
        int course
        timestamp sentAt
        timestamp startedAt
        timestamp completedAt
    }

    STATION {
        string id PK
        string tenantId FK
        string name
        string code
        enum type
        int displayOrder
        boolean isActive
    }

    KDS_DISPLAY {
        string id PK
        string stationId FK
        string deviceId
        string ipAddress
        json configuration
        timestamp lastPing
    }

Kitchen Reports

pie title Average Ticket Times by Station
    "Grill" : 8
    "Fry" : 4
    "Prep" : 3
    "Bar" : 2
gantt
    title Sample Order Timeline
    dateFormat HH:mm:ss
    axisFormat %H:%M:%S

    section Order #42
    Received           :a1, 12:00:00, 10s
    Prep Station       :a2, after a1, 120s
    Grill Station      :a3, after a1, 300s
    Fry Station        :a4, after a1, 180s
    Expo Assembly      :a5, after a3, 60s
    Served             :milestone, after a5, 0s