TorbatYar/frontend/docs/experience-frontend-architecture.md
Mortezakoohjani 0eec9f729b feat(experience): deploy Experience frontend FE-11.0-11.5 portal
Commit completed Torbat Pages admin frontend module, BFF proxy, routes, and validation artifacts for official platform deploy.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-27 21:01:50 +03:30

1.6 KiB

Experience Frontend Architecture

Torbat Pages (frontend/modules/experience/) mirrors the Delivery module layout.

Layers

Browser → /api/experience BFF → experience-service:8008
  • BFF: frontend/app/api/experience/[...path]/route.ts
  • API client: services/experience-api.ts — normalizeList for array/paginated responses; PATCH includes version on updates
  • Soft delete: POST /api/v1/{resource}/{id}/delete where backend uses that convention

Module structure

Path Role
components/ PortalShell, ListCrudPage factory, PhaseGate, Breadcrumbs, WorkspaceSwitcher, createPortalLayout
constants/ portals.ts (nav groups), permissions.ts, phaseRegistry.ts
design-system/ tokens, TablePage, StatusChip, StatGrid, EmptyState, Skeleton
features/ Screen implementations
hooks/ useExperienceCapabilities, useExperiencePermissions, useExperienceWorkspace
pages/shared.tsx Loaders, errors, CSV export
types/ API response types

Auth & tenant

  • AuthGuard + useMe tenant gate (same as Delivery)
  • X-Tenant-ID on all authenticated API calls
  • Workspace switcher persists experience.selectedWorkspaceId in localStorage

Builder ownership (ADR-002)

Visual builder UX is owned by Experience FE. page_builder capability flag is reserved — builder is not blocked when flag is false.

publish_id (FE-11.5)

Presentation only: provisional publish_id = resource.id until FE-11.6+ registry. Labelled clearly in UI.

Validation

npm run validate:experience