Saltar al contenido
dumaloor.dev_
~/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.