Documentación Técnica

Guía de arquitectura, requisitos y despliegue de Wavii.

1. Arquitectura y Requisitos Previos

El repo wavii está compuesto por varios servicios interconectados. Para el correcto funcionamiento en un entorno de desarrollo o producción, es necesario contar con los siguientes requisitos:

2. Configuración y Despliegue del Backend

El backend está contenerizado para garantizar un entorno reproducible, compuesto por Spring Boot, PostgreSQL, MongoDB y Nginx.

Variables de Entorno

En la ruta wavii/docker/.env deben definirse las credenciales. (Nota: No subir a control de versiones).

MAIL_USERNAME=correo@wavii.app
MAIL_PASSWORD="password_de_aplicacion"
TWILIO_ACCOUNT_SID=XXX
TWILIO_AUTH_TOKEN=XXX
TWILIO_FROM_NUMBER=+34XXXXXXXXX
STRIPE_SECRET_KEY=sk_test_XXX
STRIPE_WEBHOOK_SECRET=whsec_XXX
JWT_SECRET=super_secret_key_base64
ODOO_WEBHOOK_SECRET=wavii_odoo_secret_2026

Ejecución de los Contenedores

Navega a la carpeta de Docker y ejecuta el compose:

cd wavii/docker
docker compose up -d

Servicios levantados:

3. Despliegue en VPS (Producción) con Dominio y HTTPS

Para asegurar las comunicaciones según el estándar DPL, es necesario un dominio (e.g. wavii.app) y un certificado firmado (Let's Encrypt).

  1. Configurar los registros DNS tipo A del dominio apuntando a la IP pública del VPS.
  2. Instalar Certbot en el servidor:
    sudo apt update
    sudo apt install certbot python3-certbot-nginx
  3. Generar el certificado HTTPS:
    sudo certbot --nginx -d wavii.app -d api.wavii.app
  4. Certbot actualizará automáticamente la configuración de Nginx para redirigir el tráfico del puerto 80 al 443.

4. Configuración del ERP Odoo (Módulo SSG)

Odoo corre dentro del mismo ecosistema Docker en el puerto 8069.

  1. Abre http://localhost:8069 en el navegador (o http://tu_dominio:8069).
  2. Crea la base de datos wavii_odoo con la contraseña de master definida como wavii_admin_2026.
  3. Instala el módulo de Contabilidad y CRM.
  4. Para la integración bidireccional, asegura que ODOO_WEBHOOK_SECRET coincide en el backend y en Odoo. Al aprobar un profesor, Odoo lanza una petición POST a https://api.wavii.app/api/verification/odoo-webhook.

5. Compilación y Ejecución del Frontend (Mobile)

El frontend está desarrollado en React Native usando Expo SDK 54.

Ejecución en Modo Desarrollo

El móvil y el ordenador deben estar en la misma red WiFi (o usar Tunnel).

cd wavii/frontend
npm install
# Asegúrate de actualizar la IP de API_BASE_URL en src/api/config.ts
npx expo start -c

Escanea el código QR desde la app de la cámara en iOS o desde la app Expo Go en Android.

Compilación (Build) para Producción

Para generar los binarios finales (APK/AAB para Android, IPA para iOS) y subirlos a las tiendas, se utiliza EAS (Expo Application Services).

# Iniciar sesión en Expo
npx eas login

# Configurar el proyecto
npx eas build:configure

# Construir para Android
npx eas build --platform android --profile production

# Construir para iOS
npx eas build --platform ios --profile production

6. Testing Unitario (Backend)

La aplicación backend cuenta con una cobertura de test superior al 80% (JUnit 5 + Mockito). Para ejecutar las pruebas y generar el reporte JaCoCo:

cd wavii/backend
mvn clean verify

El reporte HTML estará disponible en backend/target/site/jacoco/index.html.

7. Documentación de API (Swagger / OpenAPI)

Toda la especificación de los endpoints REST, incluyendo esquemas de request/response, se genera automáticamente. Con el backend levantado, accede a: