{
  "captured": "2026-10-08",
  "environment": "Local current-source Admin and online portal; locally compiled Flutter web kitchen, cashier, kiosk; isolated SQLite demonstration data. No physical payment or printer tested.",
  "annotations": "Numbered markers are HTML overlays; original JPEG captures are unchanged.",
  "screenshots": [
    {
      "section": "setup",
      "file": "app-admin-sign-in.jpg",
      "title": "Sign in to the management dashboard",
      "where": "Admin web address → Sign in",
      "steps": [
        "Enter the work email assigned by your administrator.",
        "Enter your password, then select Sign in. Use Forgot password? only if you need account recovery.",
        "After signing in, confirm the restaurant or branch you are working in. The demo shortcut pictured is for testing; use your own assigned account."
      ],
      "result": "The dashboard opens for your account.",
      "pins": []
    },
    {
      "section": "setup",
      "file": "app-admin-setup.jpg",
      "title": "Follow the restaurant setup checklist",
      "where": "Admin → Review restaurant setup",
      "steps": [
        "Select a setup task in the list on the left. Start with Confirm your branch.",
        "Use the action in the right panel to open the relevant page, then finish the actual setup there.",
        "Return to the checklist and mark the task done only after checking it. Close setup if you need to return to the dashboard."
      ],
      "result": "The checklist shows what still needs attention; a completed check is not a hardware or payment test.",
      "pins": []
    },
    {
      "section": "menu",
      "file": "app-menu-items.jpg",
      "title": "Find, edit, or add a menu item",
      "where": "Admin → Menu Hub → Items",
      "steps": [
        "Check the branch name at the upper left. Use the tabs to switch between Categories, Items, Modifiers, Combos, and Preview.",
        "Select Add Item at the upper right to begin creating an item.",
        "For an existing item, use Search, then its Edit action. The Status switch controls whether the item is available."
      ],
      "result": "You can identify the exact item and branch before changing anything.",
      "pins": [
        [
          12,
          13
        ],
        [
          86,
          7
        ],
        [
          87,
          80
        ]
      ]
    },
    {
      "section": "menu",
      "file": "app-menu-add-item.jpg",
      "title": "Fill in the product details",
      "where": "Menu Hub → Add Item → Create New",
      "steps": [
        "Type the product Name. Use a clear name a customer will recognize.",
        "Enter Base Price and choose Category. Review cost, tax, inventory tracking, image, and description as needed.",
        "Scroll down to Create & Continue to move to Modifiers & Options. Follow the remaining save steps, then check the result in Preview. Pick Existing is for adding a product already in the catalog."
      ],
      "result": "Required fields are filled and the product is assigned to the correct category.",
      "pins": [
        [
          94,
          33
        ],
        [
          74,
          44
        ],
        [
          94,
          44
        ]
      ]
    },
    {
      "section": "devices",
      "file": "app-pos-setup.jpg",
      "title": "Get the cashier pairing code",
      "where": "Admin → POS Setup",
      "steps": [
        "Check the Outlet card. This is the restaurant the terminal will join.",
        "Set Count to the number of codes needed, then choose Generate POS Code.",
        "Enter the newly generated code on the cashier device. The screenshot shows the page before a code is generated."
      ],
      "result": "A cashier terminal can be linked to the correct branch.",
      "pins": [
        [
          41,
          23
        ],
        [
          34,
          46
        ],
        [
          36,
          53
        ]
      ]
    },
    {
      "section": "kiosk",
      "file": "app-kiosk-order-type.jpg",
      "title": "Choose how to receive the meal",
      "where": "Kiosk → Start Order",
      "steps": [
        "Choose Eat In for a restaurant table or Take Away for collection.",
        "Order Online is the phone-ordering route when offered. For this kiosk example, choose Take Away.",
        "Check the selected option, then tap Continue."
      ],
      "result": "The customer menu opens for the selected order type.",
      "pins": [
        [
          87,
          27
        ],
        [
          87,
          45
        ],
        [
          85,
          87
        ]
      ]
    },
    {
      "section": "kiosk",
      "file": "app-kiosk-menu.jpg",
      "title": "Browse and add food",
      "where": "Kiosk → menu",
      "steps": [
        "Use the category list on the left to find food or drinks.",
        "Read the item name and price. Tap the item to view its details, or use its + button to add it where supported.",
        "When an item has required choices, complete them. After adding an item, the order bar shows the quantity and total; use Place Order to review the basket."
      ],
      "result": "The item appears in the current order. Placeholder pictures are normal in this demo because no food photos were uploaded.",
      "pins": [
        [
          7,
          28
        ],
        [
          25,
          60
        ],
        [
          32,
          66
        ]
      ]
    },
    {
      "section": "kiosk",
      "file": "app-kiosk-item.jpg",
      "title": "Read details before adding",
      "where": "Kiosk → tap an item",
      "steps": [
        "Check the name, price, and description. The screenshot shows Cappuccino as a separate item-details example.",
        "Enter Special Requests if needed and complete any options displayed.",
        "Tap Add to Order to add this item. Use the X to leave without adding."
      ],
      "result": "The item is added with the chosen details.",
      "pins": [
        [
          36,
          49
        ],
        [
          75,
          76
        ],
        [
          83,
          92
        ]
      ]
    },
    {
      "section": "kiosk",
      "file": "app-kiosk-cart.jpg",
      "title": "Review the kiosk basket",
      "where": "Kiosk menu → Place Order",
      "steps": [
        "Read the item list. Use − or + to correct the quantity.",
        "Choose Add More Items if something is missing. Check the total below.",
        "Tap Checkout when the basket is correct, then follow the configured payment or pay-later instructions. Keep the final order number."
      ],
      "result": "The order moves to checkout. Reaching this cart alone does not mean the order has been submitted.",
      "pins": [
        [
          20,
          26
        ],
        [
          81,
          61
        ],
        [
          84,
          92
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-sign-in.jpg",
      "title": "Start at the staff sign-in screen",
      "where": "Cashier app → Sign in",
      "steps": [
        "Enter the assigned email and password.",
        "Select Sign In. The Use demo account button belongs to a test workflow.",
        "If this is a new terminal, continue through device pairing before entering your staff passcode."
      ],
      "result": "The app opens Pair Device, or resumes the next setup step.",
      "pins": []
    },
    {
      "section": "cashier",
      "file": "app-cashier-pair.jpg",
      "title": "Link this cashier terminal to a branch",
      "where": "Cashier → Pair Device",
      "steps": [
        "Ask the manager for a code from Admin → POS Setup.",
        "Enter that code in the large code field. Do not use your staff PIN here.",
        "Tap Verify & Pair. Confirm the branch shown on the next screen."
      ],
      "result": "The terminal is paired and the staff passcode screen opens.",
      "pins": [
        [
          58,
          8
        ],
        [
          61,
          61
        ],
        [
          62,
          73
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-passcode.jpg",
      "title": "Identify the person working",
      "where": "Cashier → Passcode",
      "steps": [
        "Check the branch name at the top. Use Change if the terminal is pointed at the wrong branch.",
        "Enter your own assigned staff PIN using the keypad.",
        "Tap Confirm. If the PIN is not accepted, ask the manager to check your staff setup."
      ],
      "result": "The clock-in confirmation identifies the staff member and branch.",
      "pins": [
        [
          58,
          16
        ],
        [
          61,
          58
        ],
        [
          59,
          86
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-clock-in.jpg",
      "title": "Check your clock-in details",
      "where": "Cashier → Clocked In",
      "steps": [
        "Read the Staff and Branch rows.",
        "Check the device and shift information.",
        "Tap Continue to count the opening cash."
      ],
      "result": "You proceed to the opening drawer screen.",
      "pins": []
    },
    {
      "section": "cashier",
      "file": "app-cashier-float.jpg",
      "title": "Record the cash already in the drawer",
      "where": "Cashier → Cash Drawer Opening",
      "steps": [
        "Count the physical cash before entering a number. Previous Shift Close is a reference, not a replacement for your count.",
        "Use the keypad or a matching preset to enter the opening amount. In this training example, the amount is 0.00.",
        "Check the amount, then tap Open Drawer. For real service, use the amount actually counted."
      ],
      "result": "The opening cash amount is recorded and the cashier workspace becomes available.",
      "pins": [
        [
          37,
          23
        ],
        [
          93,
          28
        ],
        [
          97,
          95
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-orders.jpg",
      "title": "Find an order or begin a sale",
      "where": "Cashier → Orders",
      "steps": [
        "Use the search box to find an existing order number. Check Open orders, Online open, or Closed as appropriate.",
        "Tap an order row to inspect that ticket. Check its payment before collecting money.",
        "For a new counter sale, tap New order. Quick sell is a separate rapid-sale route."
      ],
      "result": "You either open the original ticket or begin a new sale without duplicating an existing order.",
      "pins": [
        [
          24,
          7
        ],
        [
          53,
          14
        ],
        [
          78,
          10
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-order-type.jpg",
      "title": "Start a takeaway counter order",
      "where": "Cashier → New order",
      "steps": [
        "Select Dine-in, Take-out, or Quick Sell according to the customer’s request.",
        "In this example, Take-out is selected.",
        "Tap Continue with Take-out."
      ],
      "result": "The product menu opens with Take-out selected.",
      "pins": [
        [
          39,
          54
        ],
        [
          61,
          54
        ],
        [
          70,
          84
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-menu.jpg",
      "title": "Build the counter order",
      "where": "Cashier → New order → product menu",
      "steps": [
        "Check Order Type and enter the customer name if needed.",
        "Use Search menu or a category, then tap an item. Complete any required options.",
        "Tap View Cart at the bottom right to review the items and amount."
      ],
      "result": "The cart contains the requested food; the example shows one Latte.",
      "pins": [
        [
          18,
          17
        ],
        [
          50,
          12
        ],
        [
          96,
          89
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-cart.jpg",
      "title": "Check quantities and total",
      "where": "Cashier → View Cart",
      "steps": [
        "Read the item list and use − / + to correct quantities.",
        "Review Order Summary, including discounts, tax, and total.",
        "Tap Proceed to Payment. In the demonstrated Take-out flow, the next page is a review screen with Create order."
      ],
      "result": "You reach the checkout review. No payment has been collected just by opening this panel.",
      "pins": [
        [
          91,
          13
        ],
        [
          96,
          83
        ],
        [
          96,
          95
        ]
      ]
    },
    {
      "section": "cashier",
      "file": "app-cashier-checkout.jpg",
      "title": "Create the ticket before collecting payment",
      "where": "Cashier → Checkout",
      "steps": [
        "Check the order type and items. Use Edit if the order type is wrong.",
        "Review the total and apply loyalty through the available flow before creating the ticket.",
        "Tap Create order. The message underneath explains that payment can be completed in the order screen after creation."
      ],
      "result": "The app opens the new order with its number and unpaid amount.",
      "pins": [
        [
          55,
          16
        ],
        [
          93,
          50
        ],
        [
          92,
          58
        ]
      ]
    },
    {
      "section": "payments",
      "file": "app-cashier-payment.jpg",
      "title": "Check food progress and money separately",
      "where": "Cashier → open an order",
      "steps": [
        "Match the order number and items on the left to the customer’s ticket. The timeline below tracks food preparation.",
        "On the right, read Amount due and the UNPAID/paid status. Choose the appropriate payment action, such as Paid by Cash or the configured card provider.",
        "Complete that payment flow and verify its final result. Do not use Start cooking as proof that payment was received."
      ],
      "result": "The payment record reflects the money actually collected. This screenshot stops before any cash or card payment.",
      "pins": [
        [
          12,
          5
        ],
        [
          95,
          23
        ],
        [
          95,
          75
        ]
      ]
    },
    {
      "section": "kitchen",
      "file": "app-kitchen-branch.jpg",
      "title": "Choose the kitchen location",
      "where": "Chef app → Sign in → Select Branch",
      "steps": [
        "Read the branch names available to your account.",
        "Tap the branch this kitchen serves. In the example it is Demo Outlet.",
        "Check the signed-in staff identity at the bottom; use Switch Account if needed."
      ],
      "result": "Printer Configuration opens for the selected branch.",
      "pins": [
        [
          77,
          8
        ],
        [
          46,
          43
        ],
        [
          79,
          93
        ]
      ]
    },
    {
      "section": "kitchen",
      "file": "app-kitchen-printer.jpg",
      "title": "Set up kitchen printing",
      "where": "Chef app → Printer Configuration",
      "steps": [
        "Choose the connection type. For Network (TCP), enter the printer’s actual IP address and port supplied by your team.",
        "Select Save & Connect, then Test Print. A successful screen connection alone does not prove a ticket printed.",
        "Tap Continue to Kitchen. This build allows continuing without a printer; automatic tickets require a saved, available printer."
      ],
      "result": "The Kitchen Board opens. The screenshot shows a demo with no physical printer connected.",
      "pins": [
        [
          78,
          45
        ],
        [
          41,
          79
        ],
        [
          80,
          96
        ]
      ]
    },
    {
      "section": "kitchen",
      "file": "app-kitchen-board.jpg",
      "title": "Read the board and start cooking",
      "where": "Chef app → Kitchen Board",
      "steps": [
        "Check the branch, then use Search and the Active, New, Cooking, or Done filters.",
        "Find the correct order number. Read quantities, order type, table/customer details, and modifiers.",
        "Tap Start Cooking on that ticket when preparation begins. The green Order Ready action is for tickets already being prepared."
      ],
      "result": "The ticket moves into cooking. Order #173 is the same training order shown in the customer tracking screenshot.",
      "pins": [
        [
          41,
          21
        ],
        [
          30,
          30
        ],
        [
          30,
          48
        ]
      ]
    },
    {
      "section": "kitchen",
      "file": "app-kitchen-ticket.jpg",
      "title": "Mark a prepared order ready",
      "where": "Kitchen Board → tap a ticket",
      "steps": [
        "Check the large ticket number and status.",
        "Read the full Order Items list and confirm everything has been prepared.",
        "Tap Order Ready at the bottom when ready for handover. Print produces a ticket only with a working configured printer."
      ],
      "result": "The food status changes to ready; the cashier still needs to check payment separately.",
      "pins": [
        [
          34,
          23
        ],
        [
          40,
          53
        ],
        [
          79,
          92
        ]
      ]
    },
    {
      "section": "online",
      "file": "app-online-welcome.jpg",
      "title": "Tell the restaurant who is ordering",
      "where": "Restaurant link / QR → welcome",
      "steps": [
        "Check the restaurant name.",
        "Enter your name and email in the labeled fields.",
        "Tap Continue. These details identify the order; follow any account prompts your restaurant shows."
      ],
      "result": "The order-type choices appear.",
      "pins": []
    },
    {
      "section": "online",
      "file": "app-online-order-type.jpg",
      "title": "Select dine-in, collection, or delivery",
      "where": "Online portal → order type",
      "steps": [
        "Choose Dine In if you are eating at a table.",
        "Choose Take Out to collect from the counter, as in this example.",
        "Choose Delivery only when you need delivery and the restaurant offers it."
      ],
      "result": "The menu opens for the selected order type.",
      "pins": []
    },
    {
      "section": "online",
      "file": "app-online-menu.jpg",
      "title": "Choose items on the customer menu",
      "where": "Online portal → menu",
      "steps": [
        "Use the category buttons to browse.",
        "Select an item, complete any options, and check its price.",
        "Open Cart or Review cart after adding the items you want."
      ],
      "result": "Your order summary lists the selected items. Demo images may show Image coming soon.",
      "pins": []
    },
    {
      "section": "online",
      "file": "app-online-cart.jpg",
      "title": "Review the online cart",
      "where": "Customer menu → Cart / Review cart",
      "steps": [
        "Use − or + to adjust quantity; the bin removes an item.",
        "Read Order total and check that the basket matches your request.",
        "Select Continue to checkout."
      ],
      "result": "Checkout opens at the Fulfilment step.",
      "pins": [
        [
          60,
          51
        ],
        [
          45,
          64
        ],
        [
          64,
          74
        ]
      ]
    },
    {
      "section": "online",
      "file": "app-online-checkout.jpg",
      "title": "Check how you will receive the order",
      "where": "Checkout → Fulfilment",
      "steps": [
        "Confirm the fulfilment choice. This example says Pickup, meaning counter collection.",
        "Use Change if the choice is wrong.",
        "Select Continue to your details, then check the requested name, email, table, or delivery details."
      ],
      "result": "You can move to Payment after completing Your details.",
      "pins": []
    },
    {
      "section": "online",
      "file": "app-online-payment.jpg",
      "title": "Choose the offered payment route",
      "where": "Checkout → Payment",
      "steps": [
        "Read the available options. This demo offers Pay at cashier.",
        "Select the option you intend to use. Only enabled payment methods appear.",
        "Select Review your order."
      ],
      "result": "The final review shows your chosen payment method. Pay at cashier means money has not yet been collected.",
      "pins": []
    },
    {
      "section": "online",
      "file": "app-online-review.jpg",
      "title": "Check everything before placing the order",
      "where": "Checkout → Review",
      "steps": [
        "Read Fulfilment, Payment, Name, and Email. Use Back to correct details.",
        "Check the Order summary and total. Edit cart changes the items.",
        "Press Place order only when you intend to submit it, then wait for confirmation."
      ],
      "result": "The tracking page opens with an order number. Keep that number for staff.",
      "pins": [
        [
          65,
          62
        ],
        [
          96,
          48
        ],
        [
          64,
          88
        ]
      ]
    },
    {
      "section": "online",
      "file": "app-online-tracking.jpg",
      "title": "Follow your order number",
      "where": "After placing the order → tracking",
      "steps": [
        "Keep the order number at the top. This training order is #173.",
        "Follow Received → Preparing → Ready → Served. These labels describe food progress.",
        "Use Refresh now if needed. Keep following the payment instructions chosen at checkout."
      ],
      "result": "You can compare the same number with the kitchen or cashier; a received order is not automatically a paid order.",
      "pins": []
    },
    {
      "section": "tables",
      "file": "app-tables.jpg",
      "title": "Find the floor plan, tables, and QR tools",
      "where": "Admin → Floor & Tables",
      "steps": [
        "Choose Floor Plan, Tables, or QR Code from the top tabs.",
        "In an empty floor plan, add a Room before placing tables. Use Square or Round as appropriate for your layout.",
        "Review the setup and save the layout when ready. The screenshot is an empty demo, so Save Layout is disabled."
      ],
      "result": "The selected tab exposes the relevant table or ordering-link tools.",
      "pins": []
    },
    {
      "section": "closing",
      "file": "app-reports.jpg",
      "title": "Read reports for the correct period",
      "where": "Admin → Reports",
      "steps": [
        "Choose a report from the Reports Hub list, such as Sales, Payment Method, or Orders.",
        "Select Today, Yesterday, Last 7 Days, Last 30 Days, or Custom.",
        "Read the metric labels and compare like-for-like figures. Gross Sales, Net Sales, and cash counted are different measures."
      ],
      "result": "You know what period and type of record the displayed totals represent.",
      "pins": []
    },
    {
      "section": "troubleshooting",
      "file": "app-printer-warning.jpg",
      "title": "Understand a printer warning",
      "where": "Cashier → Printer Warning",
      "steps": [
        "Read the exact problem. This example says the network printer is not connected and its IP is not configured.",
        "Use Open Settings to enter the correct printer setup and test it. Ask the manager for the printer’s connection details.",
        "Not now dismisses the warning; it does not repair printing. Only continue without printing if that is acceptable for the current task."
      ],
      "result": "You know whether the printer still needs attention before serving customers.",
      "pins": [
        [
          64,
          45
        ],
        [
          65,
          63
        ],
        [
          44,
          63
        ]
      ]
    }
  ]
}
