Manual de Integración
Este manual proporciona información completa sobre la integración, instalación y configuración del sistema UnoSportClub.
Introducción
UnoSportClub es una plataforma web completa para la gestión de clubes deportivos, construida con Angular y Firebase. El sistema está diseñado como una aplicación multi-proyecto que incluye diferentes interfaces para diferentes roles de usuario.
Arquitectura del Sistema
Componentes Principales
El sistema está compuesto por los siguientes componentes:
Frontend (Angular)
-
Aplicación Principal (
unosportclub): Interfaz para usuarios finales -
Panel de Operador (
panel): Interfaz para operadores del día a día -
Panel de Entrenador (
trainer): Interfaz para entrenadores -
Panel de Control (
sudo): Interfaz para super usuarios y administradores
Flujo de Datos
El sistema sigue una arquitectura cliente-servidor:
-
El usuario accede a una de las aplicaciones frontend (hosted en Firebase Hosting)
-
La aplicación se autentica usando Firebase Authentication
-
Las peticiones a la API se enrutan a Firebase Functions
-
Las Functions procesan las peticiones y consultan PostgreSQL
-
Las respuestas se devuelven al cliente
Estructura del Proyecto
Organización de Directorios
unosportclub/
├── projects/ # Proyectos Angular independientes
│ ├── panel/ # Panel de operador
│ ├── trainer/ # Panel de entrenador
│ └── sudo/ # Panel de control
├── src/ # Aplicación principal Angular
├── functions/ # Backend (Firebase Functions)
│ ├── routes/ # Rutas de la API
│ ├── db/ # Migraciones y seeders
│ └── models/ # Modelos de datos
├── docs/ # Documentación
├── firebase.json # Configuración de Firebase
└── .firebaserc # Configuración de proyectos Firebase
Configuración de Hosting Múltiple
El sistema utiliza múltiples sitios de hosting en Firebase:
-
prod: Aplicación principal (
dist/unosportclub/browser) -
panel: Panel de operador (
dist/panel/browser) -
trainer: Panel de entrenador (
dist/trainer/browser) -
control: Panel de control (
dist/sudo/browser)
Cada sitio tiene su propia configuración en firebase.json y se despliega independientemente.
Configuración de Entornos
Variables de Entorno
El sistema requiere las siguientes variables de entorno para funcionar:
Configuración de Firebase Authentication
El sistema utiliza Firebase Authentication con los siguientes métodos:
-
Email/Password
-
Autenticación mediante tokens JWT
Los roles se gestionan mediante custom claims en Firebase Auth:
-
admin: Administrador -
operator: Operador -
trainer: Entrenador -
sudo: Super usuario
Integración de Componentes
Comunicación Frontend-Backend
El frontend se comunica con el backend mediante HTTP requests a la API REST:
// Ejemplo de servicio Angular
import { HttpClient } from '@angular/common/http';
import { inject } from '@angular/core';
export class MyService {
private http = inject(HttpClient);
private apiUrl = '/api';
getData() {
return this.http.get(`${this.apiUrl}/endpoint`);
}
}
Autenticación y Autorización
El sistema utiliza interceptores HTTP para agregar tokens de autenticación:
// Interceptor de autenticación
export const authInterceptor: HttpInterceptorFn = (req, next) => {
const auth = inject(Auth);
const token = await auth.currentUser?.getIdToken();
if (token) {
req = req.clone({
setHeaders: {
Authorization: `Bearer ${token}`
}
});
}
return next(req);
};
El backend verifica los tokens y los custom claims para autorizar las peticiones.
Despliegue
Desarrollo Local
Para desarrollo local:
# Iniciar emuladores de Firebase
firebase emulators:start
# Construir y observar cambios
npm run watch:all
# O usar el comando combinado
npm run dev:firebase
Producción
Para desplegar a producción:
# Construir todas las aplicaciones y desplegar
npm run deploy:firebase
Este comando:
-
Construye todas las aplicaciones Angular
-
Despliega las Functions a Firebase
-
Despliega todos los sitios de hosting
Despliegue Selectivo
Puedes desplegar componentes específicos:
# Solo Functions
firebase deploy --only functions
# Solo Hosting
firebase deploy --only hosting
# Solo una aplicación específica
firebase deploy --only hosting:prod
firebase deploy --only hosting:panel
firebase deploy --only hosting:trainer
firebase deploy --only hosting:control
Seguridad
Autenticación
-
Todos los endpoints requieren autenticación (excepto endpoints públicos)
-
Los tokens JWT se validan en cada petición
-
Los custom claims determinan los permisos
Solución de Problemas Comunes
Error de Conexión a Base de Datos
-
Verifica que PostgreSQL esté corriendo
-
Verifica las credenciales en
functions/.env -
Verifica que el firewall permita conexiones
-
Para bases de datos en la nube, verifica la configuración de SSL
Próximos Pasos
Una vez completada la integración:
-
Revisa la Documentación del Desarrollador
-
Consulta la Referencia de API
-
Configura dominios personalizados si es necesario
-
Configura monitoreo y alertas
Actualización del Sistema
Proceso de Actualización
Para actualizar el sistema a una nueva versión:
-
Backup: Realiza un backup completo antes de actualizar
-
Revisa el changelog: Consulta los cambios en la nueva versión
-
Actualiza código:
git pullo descarga la nueva versión -
Actualiza dependencias:
npm installen el proyecto principal yfunctions/ -
Ejecuta migraciones:
npm run db:migratesi hay nuevas migraciones -
Reconstruye:
npm run build:all -
Despliega:
npm run deploy:firebase -
Verifica: Prueba las funcionalidades principales
Mantenimiento Regular
Tareas de Mantenimiento Diarias
-
Revisar logs de errores
-
Verificar que los backups se ejecuten correctamente
-
Monitorear el uso de recursos
-
Revisar métricas de rendimiento