# Phase 12.1 — Digital Menu Catalog | Field | Value | | --- | --- | | Status | Complete | | Module | hospitality | | Commercial Product | Torbat Food | | Version | 0.12.1.0 | | Database | `hospitality_db` | | API Port | 8009 | | ADR | ADR-001, ADR-003, ADR-006, ADR-017 | | Prior phase | [12.0 Foundation](hospitality-phase-12-0.md) | ## Goal Extend the Hospitality Platform digital menu with catalog depth — allergens, modifier groups/options, availability windows, Storage media refs, and multi-language shells — without introducing POS, kitchen, QR ordering, or reservation engines. ## Scope (In) - Catalog aggregates: Allergen, ModifierGroup, ModifierOption, MenuItemModifier, MenuItemAllergen, AvailabilityWindow, MenuMediaRef, MenuLocalization - Additive MenuItem fields: preparation_minutes, calories, spicy_level, dietary flags, tags, primary_media_ref - Catalog APIs under `/api/v1` + validators + permissions `hospitality.allergens|modifier_*|availability_windows|menu_media|menu_localizations.*` - Publish-only catalog events `hospitality.*` - Alembic `0002_phase_121_digital_menu_catalog` - Capability flag `digital_menu_catalog: true`; version `0.12.1.0` ## Out of Scope - POS Lite / POS Pro - Kitchen display / tickets - QR Menu rendering / QR Ordering - Reservation / Table Service engines - Payment posting / Delivery dispatch - Binary media storage (refs to Storage only) ## Owned Modules (aggregates) Independent aggregates in `app/models/catalog.py` (UUID refs only). Foundation menu shells from 12.0 remain owners of Menu / Category / Item core rows. ## Published Events | Event | Aggregate | | --- | --- | | `hospitality.allergen.created` | allergen | | `hospitality.modifier_group.created` | modifier_group | | `hospitality.modifier_option.created` | modifier_option | | `hospitality.menu_item_modifier.linked` | menu_item_modifier | | `hospitality.menu_item_allergen.linked` | menu_item_allergen | | `hospitality.availability_window.created` | availability_window | | `hospitality.menu_media_ref.created` | menu_media_ref | | `hospitality.menu_localization.upserted` | menu_localization | ## API Contracts (catalog) | Resource | Prefix | | --- | --- | | Allergens | `/api/v1/allergens` | | Modifier groups / options | `/api/v1/modifier-groups`, `/modifier-options` | | Item ↔ modifier / allergen links | `/api/v1/menu-item-modifiers/link`, `/menu-item-allergens/link` | | Availability windows | `/api/v1/availability-windows` | | Menu media refs | `/api/v1/menu-media-refs` | | Menu localizations | `/api/v1/menu-localizations/upsert` | ## Permissions Catalog trees: `hospitality.allergens.*`, `hospitality.modifier_groups.*`, `hospitality.modifier_options.*`, `hospitality.availability_windows.*`, `hospitality.menu_media.*`, `hospitality.menu_localizations.*`. ## Quality Gates All gates passed (architecture, dependency, migration, tenant isolation, API, permissions, security, performance, documentation). See [phase-handover/phase-12-1.md](phase-handover/phase-12-1.md). ## Related Documents - [Hospitality Roadmap](hospitality-roadmap.md) - [Phase Handover 12.1](phase-handover/phase-12-1.md) - [Phase 12.0](hospitality-phase-12-0.md) - [ADR-017](architecture/adr/ADR-017.md) - [Module Registry — hospitality](module-registry.md#hospitality) - [AI Development Framework](ai-framework/README.md) - [Progress](progress.md) · [Next Steps](next-steps.md)