Add the experience service with sites through analytics/AI hooks, migrations through 0011, and phase docs/manifests marking the track complete. Co-authored-by: Cursor <cursoragent@cursor.com>
3.3 KiB
3.3 KiB
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, Communication ADR-012, Sports Center ADR-014, Delivery ADR-015). 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
- Introduce
experienceas an independent Experience Platform service with sole ownership ofexperience_db(ADR-001). - Permission prefix:
experience.*. Publish-only domain events:experience.*. - Row-level multi-tenancy via
tenant_id(ADR-003). - Consume Accounting, CRM, Loyalty, Communication, Storage, and vertical services only via REST API and Events — never shared tables or foreign model imports.
- Messaging only through Communication (ADR-012).
- Media binaries only via File Storage refs — no blobs in
experience_db. - Implementation phases are registered as Phase 11.0–11.10 in phase-manifest.yaml; roadmap in experience-roadmap.md.
- Product AI remains optional and external (ai-architecture.md). Core authoring/publish works when AI is off.
- UI builders and public shells live in
frontend/only (ADR-002); 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_builderscaffold remains a pointer
Alternatives Considered
- Website builder inside Hospitality — rejected (blocks Marketplace/Sports reuse).
- Experience tables inside Core — rejected (violates ADR-001 and module boundaries).
- Per-vertical bespoke page stacks — rejected (duplicates logic).