Data model

Keystone lists, key fields, and relationships.

Everything hangs off the StoreSettings singleton (singletonKey="primary"). Money is integer cents (...Cents, price, total).

ListKey fields
MenuCategory, MenuItem, MenuItemImagename, price, available, barStation, inventoryItem
MenuItemModifiermodifierGroup, priceAdjustment, inventoryAction, inventoryItem, inventoryQuantity
CafeOrderorderNumber, status, fulfillmentType, orderSource, subtotal, tax, tip, discount, total, handoffCode, secretKey, promisedAt
OrderItemquantity, price, itemNameSnapshot, modifierSnapshot, barStatus, station
PosOrderPOS receipt for a counter sale
Payment, PaymentEvent, PaymentProviderstatus, method, amount, refundedAmount, providerPaymentId
RegisterShift, CashMovementdrawer totals, expected and counted cash
InventoryItem, InventoryLot, StockMovementcurrentStock, reorderPoint, lot expiry, movement type
Supplier, PurchaseOrderstatus, orderedQuantity, unitCostCents
Recipe, Ingredientstatus, yieldQuantity, quantity, unit
PrepBatch, PrepBatchConsumption, WasteLogquantityMade, quantityRemaining, expiresAt, reason
StaffShiftstaff, role, startsAt, clockInAt
LoyaltyAccount, LoyaltyEventpointsBalance, drinkCredits, tier
SubscriptionplanName, billingInterval, priceCents
CateringOrdereventAt, guestCount, subtotalCents
User, Rolecustomers and staff
CoffeeDomainEvent, CoffeeOutboxDeliverysystem

Status values are listed on each dashboard page. Stock, payment, and order status fields reject generic updates; use the commands in the API reference.