Building Block View

Level 1: Station Building Blocks

station-building-blocks
Domain Model & Application
  • 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.

Pod Communication
  • 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.

User Interface
  • 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.

Foundations
  • 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.