> ## Documentation Index
> Fetch the complete documentation index at: https://wiki.vivla.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Arquitectura

> Visión general de la arquitectura y ecosistema de VIVLA

## Ecosistema VIVLA

VIVLA opera sobre dos backends independientes que sirven a distintos clientes. Todos los frontends pasan por Cloudflare para DNS, CDN y control de acceso.

```mermaid theme={null}
graph TD
    CF[Cloudflare<br/>CDN / DNS / Access]

    subgraph Clientes
        MOBILE[Mobile App<br/>React Native + Expo]
        PANEL[Panel CX<br/>vivla-panel]
        TOOLS_FE[Vivla Tools<br/>TanStack Start]
        COMMUNITY[Community Portal<br/>Next.js]
        HOME_EX[Home Excellence<br/>Next.js]
    end

    subgraph Backends
        API[Vivla API<br/>NestJS + TypeORM]
        TOOLS_BE[Tools API<br/>NestJS + Supabase]
    end

    subgraph Bases de datos
        DB_API[(PostgreSQL<br/>Railway)]
        DB_TOOLS[(PostgreSQL<br/>Supabase)]
    end

    subgraph Servicios
        CLOUD_FN[Cloud Functions<br/>Firebase]
        CALENDAR[Calendar Manager]
        APP_SITE[vivla-app-site<br/>Deep Links]
        INVITES[app-invites<br/>Invitaciones]
        NPS[VivlaNPS<br/>Imágenes NPS]
    end

    CF --> MOBILE
    CF --> PANEL
    CF --> TOOLS_FE
    CF --> COMMUNITY
    CF --> HOME_EX

    MOBILE -->|auth, booking,<br/>propiedades, stays| API
    MOBILE -->|chat, surveys| TOOLS_BE
    PANEL --> API
    TOOLS_FE --> TOOLS_BE
    COMMUNITY --> TOOLS_BE
    HOME_EX --> TOOLS_BE
    CALENDAR --> API

    API --> DB_API
    TOOLS_BE --> DB_TOOLS

    CLOUD_FN -.->|HubSpot, Notion,<br/>Slack, Zendesk| API

    style API fill:#0c2425,color:#fff
    style TOOLS_BE fill:#0c2425,color:#fff
    style MOBILE fill:#cf7625,color:#fff
    style TOOLS_FE fill:#cf7625,color:#fff
```

<Note>
  La **Mobile App** consume **dos backends**: la API principal (vivla-api) para booking, propiedades, auth y stays; y la **Tools API** (vivla-tools) para chat y encuestas.
</Note>

## Dos backends, dos mundos

|                   | Vivla API                           | Tools API                                                                    |
| ----------------- | ----------------------------------- | ---------------------------------------------------------------------------- |
| **Repo**          | `vivla-api`                         | `vivla-tools` (monorepo)                                                     |
| **Framework**     | NestJS 11                           | NestJS 10                                                                    |
| **Base de datos** | PostgreSQL (Railway) via TypeORM    | PostgreSQL (Supabase) directo                                                |
| **Auth**          | JWT propio                          | Auth0 + API key guard                                                        |
| **Clientes**      | Mobile App, Panel, Calendar Manager | Mobile App (chat/surveys), Tools Frontend, Community Portal, Home Excellence |
| **Hosting**       | Railway                             | Railway                                                                      |

## Stack tecnológico completo

| Producto             | Tecnología                                             | Hosting                 |
| -------------------- | ------------------------------------------------------ | ----------------------- |
| **Vivla API**        | NestJS 11, PostgreSQL (TypeORM), Firebase, GCS         | Railway                 |
| **Vivla Tools**      | TanStack Start + NestJS + Supabase, Stream Chat, Auth0 | Railway                 |
| **Mobile App**       | React Native 0.79, Expo SDK 53, TypeScript 5.8         | App Store / Google Play |
| **Panel CX**         | vivla-panel (TBD)                                      | TBD                     |
| **Community Portal** | Next.js 14 (portal público clientes)                   | Railway                 |
| **Home Excellence**  | Next.js 14 (portal público propietarios)               | Railway                 |
| **Cloud Functions**  | Firebase Functions, Node.js 20                         | Google Firebase         |
| **Deep Links**       | Cloudflare Pages (vivla-app-site)                      | Cloudflare Pages        |
| **Invitaciones**     | Vercel Functions (app-invites)                         | Vercel                  |
| **NPS**              | React 19, Vite, MUI, Firebase                          | TBD                     |
| **DNS / CDN**        | Cloudflare (Access para wiki y tools)                  | —                       |
| **Docs**             | Mintlify                                               | Mintlify Cloud          |

## Conexiones clave

<CardGroup cols={2}>
  <Card title="Mobile App → 2 backends" icon="mobile">
    La app consume **vivla-api** para auth, booking, propiedades, stays e invitaciones. Usa **Tools API** para chat en tiempo real y encuestas.
  </Card>

  <Card title="Panel → Vivla API" icon="headset">
    El backoffice de CX consume exclusivamente la API principal para gestionar reservas y atender clientes.
  </Card>

  <Card title="Cloud Functions → Integraciones" icon="cloud">
    Firebase Functions orquestan: HubSpot (CRM), Notion, Slack (alertas), Zendesk (soporte), reportes y NPS.
  </Card>

  <Card title="Portales públicos → Tools API" icon="globe">
    Community Portal (guías de propiedades) y Home Excellence (métricas para propietarios) son Next.js apps que consumen la Tools API.
  </Card>
</CardGroup>

Ver [Repositorios](/repositories) para la descripción detallada de cada repo.
