Stack Tecnológico de UnoSportClub
Este documento describe el stack tecnológico completo de UnoSportClub, basado en tecnologías open source modernas y probadas.
1. Frontend
1.1 Framework Principal
-
Angular 21.x: Framework principal para aplicaciones web
-
TypeScript: Superset de JavaScript con tipado estático
-
HTML5/CSS3: Estándares web modernos
-
Angular Signals: Gestión de estado reactivo
-
Standalone Components: Componentes independientes sin NgModules
1.2 Estilos y UI
-
Tailwind CSS: Framework CSS utility-first para diseño responsive
-
SCSS/SASS: Preprocesador CSS (opcional)
-
Responsive Design: Mobile-first approach
-
Progressive Web Apps (PWA): Capacidades nativas en web
-
Service Workers: Funcionalidad offline y caché
1.3 Herramientas Frontend
-
Angular CLI: Herramientas de línea de comandos
-
RxJS: Programación reactiva y observables
-
Angular Material: Componentes de UI (opcional)
-
FullCalendar: Componente de calendario para reservas
-
NgOptimizedImage: Optimización automática de imágenes
1.4 Aplicaciones Frontend
El frontend está organizado en 4 aplicaciones Angular independientes:
-
Aplicación Principal (
src/): Interfaz para clientes finales -
Panel de Operador (
projects/panel/): Gestión operativa diaria -
Panel de Entrenador (
projects/trainer/): Gestión de clases y alumnos -
Panel de Super Administrador (
projects/sudo/): Control total del sistema
2. Backend
2.1 Runtime y Framework
-
Node.js: Runtime de JavaScript en el servidor
-
Express.js 5.x: Framework web minimalista y flexible
-
HTTP Server: Servidor HTTP nativo de Node.js
2.2 APIs y Comunicación
-
RESTful APIs: Arquitectura REST con endpoints organizados por namespace
-
JSON: Formato de intercambio de datos
-
Middleware: Procesamiento de peticiones (autenticación, autorización, validación)
-
Swagger/OpenAPI: Documentación interactiva de la API
2.3 Estructura de Rutas
El backend está estructurado en namespaces:
-
functions/routes/admin/- Operaciones administrativas (operator, admin, sudo) -
functions/routes/account/- Operaciones de cuenta de usuario (user) -
functions/routes/trainer/- Operaciones de entrenador (trainer) -
functions/routes/sudo/- Operaciones de super usuario (sudo) -
functions/routes/public/- Endpoints públicos (sin autenticación) -
functions/routes/webhooks/- Webhooks externos
3. Base de Datos y Almacenamiento
3.1 Base de Datos Principal
-
PostgreSQL (Cloud SQL): Base de datos relacional principal
-
Versión: 12+ (recomendado 14+)
-
Extensión:
btree_gistpara constraints EXCLUDE -
Zona horaria:
America/Bogota -
Connection pooling optimizado
-
Transacciones ACID
4. Autenticación y Autorización
4.1 Autenticación
-
Firebase Authentication: Autenticación de usuarios
-
Email/password
-
OAuth (Google, Facebook, etc.)
-
Tokens JWT
-
Custom Claims para roles y permisos
4.2 Autorización
-
Role-Based Access Control (RBAC):
-
operator: Operador/Recepcionista -
admin: Administrador -
sudo: Super Usuario -
trainer: Entrenador -
user: Usuario regular (implícito) -
Middleware de Autorización:
-
authenticateFirebaseToken: Verificación de tokens JWT -
requireAdminAccess: Control de acceso para admin/operator/sudo -
requireSudoAccess: Control de acceso exclusivo para sudo -
requireAccountAccess: Control de acceso para usuarios regulares -
requireTrainerAccess: Control de acceso para entrenadores
5. Infraestructura y Despliegue
5.1 Hosting Frontend
-
Firebase Hosting:
-
CDN global para distribución de contenido estático
-
Caché inteligente de assets
-
SSL/TLS automático
-
Redirecciones y rewrites configurables
6. DevOps y Herramientas
6.1 Control de Versiones
-
Git: Sistema de control de versiones
-
GitHub: Repositorio y colaboración
-
Git Submodules: Gestión de dependencias (docs, functions, projects)
6.2 CI/CD
-
GitHub Actions: Automatización de workflows
-
Testing automatizado: Tests unitarios e integración
-
Deployment automatizado: Despliegue continuo
-
Dependabot: Actualizaciones automáticas de dependencias
7. Estructura del Stack
┌─────────────────────────────────────┐
│ Frontend (Angular 21.x) │
│ TypeScript + Tailwind CSS + PWA │
│ 4 aplicaciones independientes │
└──────────────┬──────────────────────┘
│
│ HTTP/REST + WebSocket
│
┌──────────────▼──────────────────────┐
│ Caddy (Reverse Proxy + LB) │
│ SSL/TLS + Health Checks │
└──────────────┬──────────────────────┘
│
│
┌──────────────▼──────────────────────┐
│ PM2 Cluster Mode │
│ Node.js + Express.js │
│ API REST + Sistema Relay │
└──────────────┬──────────────────────┘
│
│
┌──────────────▼──────────────────────┐
│ PostgreSQL (Cloud SQL) │
│ Redis (Caché/Adapter) │
│ Apache Kafka (Mensajería) │
└─────────────────────────────────────┘
│
│
┌──────────────▼──────────────────────┐
│ Firebase Authentication │
│ Firebase Hosting (CDN) │
└─────────────────────────────────────┘
8. Versiones Específicas
8.1 Frontend
-
Angular:
^21.0.2 -
TypeScript:
^5.7.3 -
RxJS:
~7.8.0 -
Tailwind CSS: Última versión estable
-
FullCalendar:
^6.1.19
8.2 Backend
-
Node.js:
22.xo superior -
Express:
^5.1.0 -
PostgreSQL Driver:
^8.16.3 -
Socket.io:
^4.8.1 -
Firebase Admin SDK:
^13.6.0