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

2.4 Sistema Realtime

  • Socket.io: Servidor WebSocket para comunicación en tiempo real

  • Sistema Relay: Gateway inmutable para notificaciones y mensajería

  • Redis: Caché de sesiones WebSocket y adapter para escalado horizontal

  • Apache Kafka: Cola de mensajes y streaming de eventos

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_gist para constraints EXCLUDE

  • Zona horaria: America/Bogota

  • Connection pooling optimizado

  • Transacciones ACID

3.2 Almacenamiento y Caché

  • Redis:

  • Caché de sesiones WebSocket

  • Adapter para Socket.io (escalado horizontal)

  • Sistema pub/sub para notificaciones

  • Configurado mediante variable de entorno REDIS_URL

3.3 Mensajería

  • Apache Kafka:

  • Cola de mensajes para procesamiento asíncrono

  • Streaming de eventos del sistema Relay

  • Persistencia de mensajes para garantizar entrega

  • Procesamiento de eventos en tiempo real

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

5.2 Reverse Proxy y Load Balancer

  • Caddy:

  • Reverse proxy y load balancer

  • Terminación SSL/TLS automática

  • Certificados Let’s Encrypt automáticos

  • Health checks para instancias backend

  • Rate limiting y protección DDoS

  • Routing inteligente basado en paths y headers

5.3 Gestión de Procesos

  • PM2:

  • Process manager para Node.js

  • Cluster mode para aprovechar múltiples cores

  • Auto-restart en caso de fallos

  • Balanceo de carga entre instancias

  • Monitoreo de recursos (CPU, memoria)

  • Logs centralizados

  • Zero-downtime deployments

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

6.3 Herramientas de Desarrollo

  • npm: Gestor de paquetes Node.js

  • Angular CLI: Herramientas de desarrollo Angular

  • Firebase CLI: Herramientas de Firebase (solo para Hosting y Auth)

  • ESLint: Linter para JavaScript/TypeScript

  • Prettier: Formateador de código

  • Husky: Git hooks

  • Lint-staged: Linting pre-commit

6.4 Base de Datos

  • psql: Cliente PostgreSQL CLI

  • pgAdmin / DBeaver: Clientes gráficos de PostgreSQL

  • Migraciones: Sistema de migraciones SQL en functions/db/migrations/

  • Seeders: Datos iniciales en functions/db/seeders/

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.x o superior

  • Express: ^5.1.0

  • PostgreSQL Driver: ^8.16.3

  • Socket.io: ^4.8.1

  • Firebase Admin SDK: ^13.6.0

8.3 Infraestructura

  • PostgreSQL: 14+ (Cloud SQL)

  • Redis: Última versión estable

  • Apache Kafka: Última versión estable

  • Caddy: Última versión estable

  • PM2: Última versión estable

8.4 Consultar Versiones Exactas

Las versiones específicas están documentadas en:

  • package.json - Dependencias del proyecto principal

  • functions/package.json - Dependencias del backend

  • package-lock.json - Versiones exactas bloqueadas

9. Actualización del Stack

9.1 Política de Actualizaciones

  • Actualizaciones de seguridad prioritarias

  • Actualizaciones menores regulares

  • Actualizaciones mayores con evaluación exhaustiva

  • Testing completo antes de actualizar en producción

9.2 Compatibilidad

  • Mantener compatibilidad con versiones anteriores cuando sea posible

  • Documentar breaking changes

  • Proporcionar guías de migración

  • Versionado semántico para APIs