Skip to main content

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.

Estructura de Modulos

La app sigue un patron module-first: cada feature tiene su propio modulo autocontenido en src/modules/, con una estructura interna consistente. El codigo compartido vive en src/shared/ y la configuracion central en src/core/.

Convencion de Estructura Interna

Cada modulo puede contener los siguientes directorios (segun necesidad):
src/modules/<nombre>/
├── api/          # Endpoints y llamadas HTTP
├── screens/      # Componentes de pantalla
├── components/   # Componentes del modulo
├── hooks/        # Hooks especificos del modulo
├── services/     # Logica de negocio
├── types/        # Tipos TypeScript
├── constants/    # Constantes
├── utils/        # Utilidades
├── store/        # Zustand store del modulo (si aplica)
└── features/     # Sub-features (ej: booking/features/exchange)
No todos los modulos implementan todos los directorios. Cada modulo incluye solo lo que necesita, manteniendo la estructura ligera.

Lista de Modulos

ModuloDirectorioDescripcion
authsrc/modules/auth/Autenticacion, login, registro, reset de contrasena, modo visitor/guest
bookingsrc/modules/booking/Reservas, intercambios, creacion de bookings, wallet. Incluye sub-feature features/exchange
chatsrc/modules/chat/Mensajeria en tiempo real con Stream Chat. Gestion de canales, mensajes, invitaciones
homesrc/modules/home/Pantalla principal, dashboard de propiedad, galeria, amenidades
invitationssrc/modules/invitations/Gestion de invitaciones a propiedades por token y onboarding de invitados
notificationssrc/modules/notifications/Gestion de notificaciones push y permisos
profilesrc/modules/profile/Perfil de usuario, configuracion, roles (UserRole.GUEST, owner, etc.)
propertysrc/modules/property/Detalle de propiedades, seleccion de propiedad, reportes de calificacion
stayssrc/modules/stays/Historial de estadias (activas, pasadas, canceladas, pendientes), reviews

Codigo Compartido (src/shared/)

Ubicados en src/shared/components/, organizados por categoria:
DirectorioContenido
ui/Componentes base de UI (inputs, cards, badges, etc.)
buttons/Botones reutilizables (BackButton, etc.)
layout/Componentes de layout (Header, etc.)
navigation/Componentes de navegacion
feedback/Componentes de feedback (ProgressToastManager, etc.)
icons/Iconos SVG custom (MyHome, Calendar, Stays, Profile, Inbox)
onboarding/Componentes del flujo de onboarding

Configuracion Central (src/core/)

analytics/

Cliente de PostHog (client.posthog.ts), definicion de eventos (events.ts) y punto de entrada (index.ts).

config/

Variables de entorno (env/), configuracion de Sentry (sentry.ts), PostHog (posthog.ts), deep linking (linking.ts), navegacion (navigation.ts).

featureFlags/

Feature flags centralizados (flags.ts). Ejemplo: financialReport2025.
Adicionalmente, src/core/i18n/ contiene la internacionalizacion con soporte para ingles (en.ts) y espanol (es.ts), ademas de localizacion de calendarios (calendarLocalization.ts).

Diagrama de Dependencias

src/
├── core/                    # Configuracion central (sin dependencias de modules/)
│   ├── analytics/           #   PostHog
│   ├── config/              #   Env, Sentry, linking, navigation
│   ├── featureFlags/        #   Feature flags
│   └── i18n/                #   Internacionalizacion (es, en)

├── shared/                  # Codigo compartido (puede depender de core/)
│   ├── components/          #   UI reutilizable
│   ├── hooks/               #   Hooks globales
│   ├── stores/              #   Zustand stores globales
│   ├── services/            #   API client, storage, upload
│   ├── contexts/            #   React Contexts
│   ├── constants/           #   Constantes (queryClient, navigation)
│   ├── styles/              #   Theme y estilos globales
│   └── types/               #   Tipos compartidos

└── modules/                 # Features (pueden depender de core/ y shared/)
    ├── auth/
    ├── booking/
    ├── chat/
    ├── home/
    ├── invitations/
    ├── notifications/
    ├── profile/
    ├── property/
    └── stays/
La regla de dependencia es unidireccional: modules/ puede importar de shared/ y core/, pero shared/ no debe importar de modules/ y core/ no debe importar de shared/ ni modules/. La excepcion es cuando se usa import dinamico (await import(...)) para evitar dependencias circulares, como en authStore que importa chatStore de forma lazy.