Touriffique Platform Architecture¶
Status: Architecture Draft v0.1
Date: 2026-09-21
This documentation defines the target architecture for evolving the legacy Laravel application into a configurable, multi-tenant platform for tourism, hospitality, leisure, rentals, experiences, events, and adjacent service businesses.
The target platform is not a rewrite of the existing application's Hotel, Apartment, Car, Tour, Space, and Beauty modules into equivalent NestJS modules. The legacy application is the behavioral baseline; the target architecture generalizes those capabilities into reusable engines and configurable vertical definitions.
Platform at a glance¶
flowchart TB
U[Visitors / Customers] --> MS[Managed Site]
U --> CS[Custom Site - Custom Plan only]
TA[Tenant Users] --> TC[Tenant Console]
PA[Platform Team] --> PC[Platform Console]
MS --> API[Platform APIs]
CS --> API
TC --> API
PC --> API
API --> PE[Platform Engine]
API --> CE[Capability Engine]
API --> CO[Commerce Engine]
API --> SE[Site Engine]
API --> CRM[CRM Engine]
API --> ME[Marketing Engine]
API --> CH[Channel & Advertising Engine]
API --> FE[Finance Engine]
API --> IE[Integration Engine]
API --> OE[Operations Engine]
API --> I18N[Internationalization Engine]
Non-negotiable product rules¶
- A tenant is an organization, not a vertical such as Hotel or Spa.
- A tenant may operate multiple brands, locations, and business units.
- Industries are configurable vertical presets over reusable capabilities rather than permanent tenant types.
- Yacht Charter and Excursions/Group Travel are first-class launch verticals.
- Standard SaaS plans use the Managed Site model.
- A decoupled/headless website is available only under the separate
Customplan, with custom commercial pricing and scope. - The same platform backend remains authoritative for managed and custom sites.
- The initial backend architecture is a modular monolith with explicit engine boundaries, designed for later extraction only when justified.
- Internationalization is platform-wide infrastructure; locale, currency, timezone and market are independent dimensions, and every engine must define its internationalization contract.
Reading order¶
Start with Platform Vision → Scope → Domain Vocabulary → Internationalization Principles → Business Capability Model → Vertical Catalog → Plans & Entitlements. Engine documents assume those definitions and should not redefine them.