Vitrina — Museo con entradas por franja
Características principales
Ciclo transaccional de franja: hold 15 min (expiresAt servidor) → confirm → QR; sweeper 30 s; mutex anti doble-venta (409)
Catálogo de exposiciones + fichas de obras con nota curatorial y selector de franjas (hoy→+30 días)
Checkout con tarifas (general/reducida/infantil/socio), add-ons y contador resync en visibilitychange/focus
Mis visitas: lista↔detalle con totales consistentes, cancelación ≥24 h y estados dinámicos
Puntos socio derivados: 10 pts × plaza confirmed|used (seed y compras reales)
Admin: ocupación e ingresos con gráficos SVG reales (ejes X/Y + tooltips)
Descripción
Vitrina es la experiencia digital de un museo de arte y ciencia para el visitante final. Explora exposiciones permanentes y temporales, consulta fichas curatoriales de obras, elige día y franja horaria con plazas libres reales, añade opcionales (audioguía, visita guiada) y confirma el pago. El ticket llega con QR descargable y un email simulado. En Mis visitas consulta estados (pendiente, confirmada, usada, cancelada, expirada), cancela con política de 24 h y acumula puntos de socio derivados de visitas reales (10 pts × plaza). La capa de valor de verdad es el ciclo transaccional de entrada temporizada: cada franja es un recurso finito con retención pending y expiresAt calculado en servidor, sweeper cada 30 s que libera cupo vencido, mutex anti doble-venta (409) y consistencia lista ↔ detalle en totales y plazas libres. El personal curator publica exposiciones y consulta ocupación e ingresos con gráficos reales (ejes, fechas y tooltips).
Tecnologías utilizadas
Angular
TypeScript
SQLite