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:
- Frontend (Mobile): Node.js >= 18, Expo CLI (SDK 54), Android Studio / Xcode para emuladores, y un dispositivo físico con Expo Go.
- Backend: Java 17, Maven 3.9+, Docker y Docker Compose.
- Infraestructura: Servidor VPS con Ubuntu 22.04 LTS (o superior), al menos 4 GB de RAM y 40 GB de disco. Nginx instalado como Proxy Inverso.
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:
- postgres: Puerto 5432 (Base de datos relacional).
- mongodb: Puerto 27017 (Base de datos documental).
- backend: Puerto 8080 (Spring Boot 3 REST API).
- nginx: Puerto 80 (Enrutador y Proxy inverso interno).
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).
- Configurar los registros DNS tipo A del dominio apuntando a la IP pública del VPS.
- Instalar Certbot en el servidor:
sudo apt update sudo apt install certbot python3-certbot-nginx - Generar el certificado HTTPS:
sudo certbot --nginx -d wavii.app -d api.wavii.app - 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.
- Abre
http://localhost:8069en el navegador (ohttp://tu_dominio:8069). - Crea la base de datos
wavii_odoocon la contraseña de master definida comowavii_admin_2026. - Instala el módulo de Contabilidad y CRM.
- Para la integración bidireccional, asegura que
ODOO_WEBHOOK_SECRETcoincide en el backend y en Odoo. Al aprobar un profesor, Odoo lanza una petición POST ahttps://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:
- UI interactiva:
http://localhost:8080/swagger-ui.html - Esquema JSON:
http://localhost:8080/v3/api-docs