~/case-studies
App móvil · Festival y club
App móvil iOS y Android para festival y club privado
Compra de entradas, pases digitales en Wallet, club privado de socios y arquitectura para picos de miles de compras concurrentes.
duración · 12 semanas · Lanzamiento en App Store y Google Playequipo · 1 persona (full-stack + DevOps)
El reto
- ▸Picos de demanda esperados de miles de compras simultáneas en los primeros minutos de salida a la venta.
- ▸Necesidad de pases digitales en Apple Wallet y Google Wallet con QR dinámico para acceso al recinto.
- ▸Club privado de socios con beneficios diferenciados (acceso anticipado, descuentos) sobre la misma plataforma.
- ▸Cero tolerancia a doble venta o problemas de validación en puerta el día del evento.
La solución
- ▸App React Native con Expo (mismo código iOS y Android) y backend NestJS con cluster de 8 workers.
- ▸Cola BullMQ con Redis para serializar la compra y absorber picos, en vez de competir contra la base de datos.
- ▸Implementación de Apple Pass + APNs para entregar pases automáticamente al móvil tras la compra.
- ▸Sistema de socios con tiers, scoring y acceso prioritario sobre el mismo backend.
Stack
React NativeExpoNestJSPostgreSQLRedisBullMQApple PassAPNsStripe
Impacto
- ▸Salida a la venta absorbida sin caídas ni colas frustrantes para el usuario final.
- ▸Tasa de abandono en checkout reducida frente a la versión web previa que usaba ticketera externa.
- ▸Club privado activo desde el día 1 con miembros que compran un porcentaje significativamente mayor que los no-socios.
- ▸Validación en puerta sin incidencias con QR dinámico y rotación cada pocos segundos.
Aprendizajes
- ▸La diferencia entre "funciona" y "funciona bajo carga" es BullMQ. Una API que no encola está condenada en picos.
- ▸Apple Pass y Google Wallet no son intercambiables. Cada uno con su flujo, su certificado y sus quirks.
- ▸Un club privado es un producto distinto a la app. Mismo backend, pero UX y métricas muy diferentes.