ThrillVille
Características principales
Tiempos de espera en vivo modelados en servidor (cola = check-ins recientes × factor): lista, mapa y detalle con la MISMA fuente → totales consistentes
FastPass transaccional: retención 15 min con expiresAt en servidor, sweeper automático, 409 de doble venta y QR SVG descargable
Máquina de estados pending → confirmed → used / expired / cancelled con liberación automática de slots
Entradas con precios e IVA 21% calculados en servidor y QR descargable
Puntos SIEMPRE derivados de check-ins reales (Σ check-ins × puntosPorVisita), 8 insignias y niveles de Explorador
Panel admin con KPIs, ocupación por hora y ventas 7 días en gráficos SVG con ejes, fechas y tooltips
Descripción
Parque de atracciones con capa de valor doble: predicción de espera real (el servidor modela la cola de cada atracción con capacidad y duración de ciclo, y lista, mapa y detalle muestran SIEMPRE el mismo waitMinutes) y ciclo transaccional FastPass completo: retención de slot con expiresAt calculado en servidor (now + 15 min), sweeper cada 30 s que expira pendientes y libera el slot, bloqueo de doble venta (mutex + 409 con slots alternativos), máquina de estados pending → confirmed → used / expired / cancelled y comprobante QR SVG descargable + email simulado. Entradas con precios e IVA 21% calculados en servidor, gamificación con puntos derivados de check-ins reales (Σ check-ins × puntosPorVisita, nunca columna arbitraria), 8 insignias con criterios JSONB y niveles de Explorador, y panel admin con KPIs del día, ocupación por hora y ventas 7 días en gráficos SVG con ejes, fechas y tooltips. UI "Feria Nocturna" dark-first (magenta neón + ámbar) con modo claro. Login con username o email, JWT persistente. Angular 22 + NestJS 11 + SQLite.
Tecnologías utilizadas
Angular
TypeScript
SQLite