Saltar al contenido principal

Stack tecnológico

Backend

TecnologíaVersiónRol
Java21Lenguaje principal
Spring Boot3.xFramework web y de inyección de dependencias
Spring Security6.xAutenticación JWT, control de acceso por rol
Spring Data JPA3.xORM sobre Hibernate
MySQL Connector/J8.xDriver JDBC
HikariCP(incluido)Pool de conexiones; máx. 10 conexiones
Caffeine3.xCaché en memoria para datos de catálogo (TTL 1 h, máx. 1 000 entradas)
Micrometer + Prometheus(incluido en Spring Boot 3)Exportación de métricas en /actuator/prometheus
Apache POI5.xGeneración de archivos Excel (.xlsx) para reportes y carga masiva
OpenPDF / iTextGeneración de reportes en PDF
springdoc-openapi2.xDocumentación Swagger UI en /swagger-ui.html
LombokReducción de boilerplate (getters, constructores, logs)

Seguridad

  • Autenticación con JWT: access token (1 hora) + refresh token (24 horas).
  • Cada request autenticado actualiza ultimo_acceso del usuario en la BD.
  • Las variables de sesión MySQL (@id_usuario_activo, @ip_cliente) se establecen por request para los triggers de auditoría.
  • Rutas públicas: /api/auth/**, /swagger-ui/**, /api-docs/**, /actuator/health, /actuator/prometheus.

Frontend

TecnologíaVersiónRol
React18Librería de UI
TypeScript5.xTipado estático
Vite6.xBundler y servidor de desarrollo
React Router7.xEnrutamiento SPA
shadcn/uiComponentes UI (Button, Dialog, Table, Badge, Card, etc.)
Tailwind CSS3.xUtilidades CSS con JIT
Framer MotionAnimaciones de componentes
Lucide ReactIconografía
Axios / FetchComunicación con la API (fetch nativo con wrapper)

Paleta de colores institucional

VariableHexUso
Verde oscuro#2C3E1FSidebar, textos principales
Verde medio#4A5D23Botones primarios, headers de tabla
Rojo acento#D91E18Alertas, borde del sidebar, badges de error
Gris claro#F5F5F0Fondo de página

Base de datos

  • MySQL 8.0 con charset utf8mb4 y collation utf8mb4_unicode_ci.
  • Esquema definido en db_sgi_emch.sql (raíz del repositorio); se ejecuta automáticamente al inicializar el volumen.
  • Vistas SQL: v_tickets_activos, v_inventario_completo, v_stock_critico, v_dashboard_resumen.
  • Triggers de auditoría: trg_audit_usuario_update, trg_audit_equipo_delete.
  • Procedimiento almacenado: sp_generar_numero_ticket — genera números correlativos TKT-YYYYMM-NNNN.

Infraestructura

Stack principal (docker-compose.yml)

ComponenteImagen DockerRol
MySQLmysql:8.0Base de datos
Spring BootDockerfile multi-stageAPI REST
FrontendDockerfile multi-stage (Node + Nginx)SPA servida por Nginx
DocsDockerfile multi-stage (Node + Nginx)Documentación Docusaurus
BackupAlpine + mysqldump + crondBackups automáticos diarios
Nginx Proxy ManagerExterno (red proxy_network)Reverse proxy con HTTPS termination

Stack de monitoreo (docker-compose.monitoring.yml)

ComponenteImagen DockerRol
Prometheusprom/prometheus:latestScraping y almacenamiento de métricas (retención 15 días)
Lokigrafana/loki:2.9.10Almacenamiento de logs de contenedores
Promtailgrafana/promtail:3.0.0Recolección de logs desde el socket de Docker
Grafanagrafana/grafana:11.5.2Visualización de dashboards y logs

El stack de monitoreo es opcional y se despliega por separado. Ver Guía de monitoreo para instrucciones.