Building Block View
Level 1: Station Building Blocks
-
Owns the recipe, ingredient, and glass catalogs, and the persisted ingredient-to-dispenser mapping.
-
Tracks which Pods are connected and what each one reports about itself.
-
Turns a selected recipe into a sequence of dispensing actions and coordinates their execution.
-
Discovers Pods, whether physically connected or simulated for development, behind one common interface.
-
Speaks the Station side of the shared wire protocol (Protocol), independent of which Pods are actually present.
-
Presents the guest ordering flow and the operator maintenance area behind the same window.
-
Reflects live domain and Pod state without owning any of it itself, and forwards user actions back into the Domain Model.
-
Provides logging, strong domain identifiers, unit-safe physical quantities, and retry and timeout helpers shared by every other building block.
Level 2: Domain Model & Application
-
Catalogs — the recipe, ingredient, and glass data loaded from the local data files described in Context and Scope.
-
Station configuration and state — the persisted ingredient-to-dispenser mapping, and the live, in-memory state of each connected Pod that the UI observes.
-
Pod registry and dispatch — tracks connected Pods and routes a command to the right one.
-
Recipe execution — scales and adjusts a recipe for the chosen glass, and executes it as a sequence of commands dispatched to the owning Pods, reporting progress as it goes.
Level 2: User Interface
The UI never owns domain or Pod state itself. A small set of dedicated components sits between the declarative UI and the Domain Model, each responsible for one concern: it reflects the relevant part of the live domain or Pod state into the UI, and translates user actions back into calls on the Domain Model.
| Concern | Responsibility |
|---|---|
Navigation & Pod Status |
Owns which screen is active, tracks live Pod connection state for display, and gates the operator maintenance area behind PIN authentication. |
Recipe Browsing & Mixing |
Publishes the recipe and ingredient catalog to the guest UI and drives recipe execution when a guest starts a mix. |
Glass Configuration |
Exposes which glasses and pour volumes a guest may currently choose from, and lets an operator change that set. |
Dispenser Calibration |
Drives load-cell taring, reference-weight calibration, and pump-step calibration for a specific dispenser, for the operator maintenance flow. |
Operator authentication itself, PIN verification and attempt-based lockout, is a small policy consumed by Navigation & Pod Status rather than a concern of its own.
Continue with Runtime View.