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
Cinco SPAs Angular (puertos locales con npm run dev:serve):
| App | Ruta código | Puerto |
|-----|-------------|--------|
| Cliente | src/ | 6100 |
| Panel | projects/panel/ | 6101 |
| Trainer | projects/trainer/ | 6102 |
| Sudo | projects/sudo/ | 6103 |
| Accounting | projects/accounting/ | 6104 |
Librería compartida: projects/common/ (@cortex-ia-com-co/common).
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/accounting/— Contabilidad NIIF -
functions/routes/public/— Endpoints públicos -
functions/routes/bot/— Bot e integraciones
3. Base de Datos y Almacenamiento
3.1 Base de Datos Principal
-
PostgreSQL: Base principal +
DB_NAME_ACCOUNTING(contabilidad) -
Node.js >= 24 (ver
package.jsonengines) -
Zona horaria:
America/Bogota
4. Autenticación y Autorización
4.1 Autenticación
-
OAuth2 local 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 -
accounting: Contabilidad NIIF -
Middleware de Autorización:
-
JWT OAuth2 middleware: 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
6. DevOps y Herramientas
6.1 Control de Versiones
-
Git: Sistema de control de versiones
-
GitHub: Repositorio y colaboración
-
Monorepo único:
docs/,functions/,projects/*en el mismo repositorio (sin submódulos)
6.2 CI/CD
Marco de gobernanza: Entornos, versiones y ciclos. Detalle del pipeline: CI/CD y DevOps.
-
GitHub Actions:
.github/workflows/ci.yml(monorepo) -
Testing automatizado:
npm testen PR ydevelop -
GHCR: imagen unificada
staging/vX.Y.Z -
Docs:
docs/.github/workflows/deploy.yml→ GitHub Pages
7. Estructura del Stack
┌─────────────────────────────────────┐
│ Frontend (Angular 21.x) │
│ TypeScript + Tailwind CSS + PWA │
│ 5 aplicaciones + common │
└──────────────┬──────────────────────┘
│
│ HTTP/REST + WebSocket
│
┌──────────────▼──────────────────────┐
│ Docker (nginx + Node) / Caddy │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ Express.js (functions/server.js) │
│ OAuth2 local + Relay (Socket.io) │
└──────────────┬──────────────────────┘
│
┌──────────────▼──────────────────────┐
│ PostgreSQL (+ DB_NAME_ACCOUNTING) │
│ Redis / Kafka (Relay, opcional) │
└─────────────────────────────────────┘
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:
>=24(engines enpackage.json) -
Express:
^5.1.0 -
PostgreSQL Driver:
^8.16.3 -
Socket.io:
^4.8.1 -
jsonwebtoken / jwks: validación OAuth2 local