# ADR-016: Independent Experience Platform Service | Field | Value | | --- | --- | | Status | Accepted | | Date | 2026-07-25 | | Deciders | Platform Architecture | | Supersedes | — | | Superseded by | — | ## Context Hospitality, Marketplace, Sports Center, CRM, and future verticals all need websites, landings, mini sites, menus-as-pages, catalogs, forms, and campaign surfaces. Embedding page/theme/template engines inside each vertical would duplicate logic and couple unrelated domains. TorbatYar already isolates shared platforms as independent services (Loyalty [ADR-011](ADR-011.md), Communication [ADR-012](ADR-012.md), Sports Center [ADR-014](ADR-014.md), Delivery [ADR-015](ADR-015.md)). Digital experience / page publishing needs the same independence. Commercial product name: **Torbat Pages**. Prefer `experience` over the historical `website_builder` scaffold for new page/site work. ## Decision 1. Introduce `experience` as an **independent Experience Platform service** with sole ownership of `experience_db` ([ADR-001](ADR-001.md)). 2. Permission prefix: `experience.*`. Publish-only domain events: `experience.*`. 3. Row-level multi-tenancy via `tenant_id` ([ADR-003](ADR-003.md)). 4. Consume Accounting, CRM, Loyalty, Communication, Storage, and vertical services **only** via REST API and Events — never shared tables or foreign model imports. 5. Messaging only through Communication ([ADR-012](ADR-012.md)). 6. Media binaries only via File Storage refs — no blobs in `experience_db`. 7. Implementation phases are registered as **Phase 11.0–11.10** in [phase-manifest.yaml](../../ai-framework/phase-manifest.yaml); roadmap in [experience-roadmap.md](../../experience-roadmap.md). 8. Product AI remains optional and external ([ai-architecture.md](../ai-architecture.md)). Core authoring/publish works when AI is off. 9. UI builders and public shells live in `frontend/` only ([ADR-002](ADR-002.md)); this service exposes APIs and events. ## Consequences ### Positive - One reusable experience platform for all verticals - No duplicated page/theme engines across Hospitality/Marketplace/etc. - Enforceable tenancy, audit, and boundary tests ### Negative - Additional deployable service and database - Eventual consistency for cross-service published surfaces ### Neutral - Registration (this ADR + manifests) precedes business code; Phase 11.0 implements the scaffold - Historical `website_builder` scaffold remains a pointer ## Alternatives Considered 1. Website builder inside Hospitality — rejected (blocks Marketplace/Sports reuse). 2. Experience tables inside Core — rejected (violates ADR-001 and module boundaries). 3. Per-vertical bespoke page stacks — rejected (duplicates logic). ## Related Documents - [Experience Roadmap](../../experience-roadmap.md) - [Experience Phase XP-Reg](../../experience-phase-xp-reg.md) - [Phase Handover XP-Reg](../../phase-handover/phase-xp-reg.md) - [Module Registry — experience](../../module-registry.md#experience) - [Module Boundaries](../module-boundaries.md) - [Phase Manifest](../../ai-framework/phase-manifest.yaml) - [Service Manifest](../../ai-framework/service-manifest.yaml) - [ADR-001](ADR-001.md) · [ADR-002](ADR-002.md) · [ADR-003](ADR-003.md) · [ADR-008](ADR-008.md) · [ADR-012](ADR-012.md)