Skip to content

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

  1. A tenant is an organization, not a vertical such as Hotel or Spa.
  2. A tenant may operate multiple brands, locations, and business units.
  3. Industries are configurable vertical presets over reusable capabilities rather than permanent tenant types.
  4. Yacht Charter and Excursions/Group Travel are first-class launch verticals.
  5. Standard SaaS plans use the Managed Site model.
  6. A decoupled/headless website is available only under the separate Custom plan, with custom commercial pricing and scope.
  7. The same platform backend remains authoritative for managed and custom sites.
  8. The initial backend architecture is a modular monolith with explicit engine boundaries, designed for later extraction only when justified.
  9. 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.