JPA_ Caso de estudio

Caso de estudio · Plataforma SaaS de fidelización · En producción

VecinoClub

Plataforma serverless de fidelización para comercios locales de Chile

Ver VecinoClub
[ EN PRODUCCIÓN ]Multi-tenant23 ADRs
El contexto

Los comercios locales necesitan construir una relación con quienes vuelven a comprar, más allá de cada venta.

La necesidad

Muchos no tienen cómo agradecer la preferencia de sus clientes ni saber quiénes son o con qué frecuencia regresan.

Primer comercio

Imaquinaria, tienda de manga y cultura japonesa en Temuco, es el primer comercio y banco de pruebas de VecinoClub.

Experiencia del cliente

  • — Escanea un código QR para entrar, sin instalar una app
  • — Consulta sellos y puntos desde el celular
  • — Revisa sus compras y beneficios disponibles
  • — Canjea recompensas del comercio

Panel del comercio

  • — Define beneficios y condiciones del programa
  • — Registra compras en caja
  • — Gestiona recompensas y sellos
  • — Consulta estadísticas de clientes y compras
Zona 1 — Borde / Público
CloudFront (CDN, SPA routing)S3 Bucket (React static build)HTTPS vía Route 53
Zona 2 — Autenticación
API Gateway (HTTP API)Cognito User PoolValidación JWT en cada request
Zona 3 — Cómputo / Privado
AWS Lambda (FastAPI + Mangum)DynamoDB single-table (por tenant_id)SSM · SES · CloudWatch
CI/CD

GitHub Actions — despliegue de frontend (S3 / CloudFront) y backend (sam deploy). Gate manual requerido antes de producción.

01

Multi-tenant desde el inicio

El sistema se diseñó desde el primer día para más de un comercio: cada consulta lleva el identificador del comercio, así que sumar uno nuevo es registrarlo, sin tocar la lógica de negocio. Imaquinaria sigue siendo el primer club y el programa Bushidō es una configuración de la plataforma, no su límite.

02

DynamoDB single-table

ADR-0006

Más de diez entidades comparten una tabla. Las claves PK/SK se modelan según los patrones de acceso y cada consulta incorpora el identificador del comercio.

03

Pipeline con gate manual

ADR-0023

GitHub Actions despliega a staging automáticamente. Producción requiere aprobación manual vía issue. Cinco bugs capturados en staging antes de llegar al sistema real.

04

Migraciones de datos como código

ADR-0019

Runner Python idempotente integrado en el pipeline CI/CD. Cada cambio de datos en DynamoDB pasa por PR, se versiona en git, y se aplica automáticamente en el deploy — cero pasos manuales post-deploy.

Requests en producción 3.397 últimos 30 días
Error rate (5xx) 0% Lambda + API Gateway
Latencia p50 end-to-end 151 ms API Gateway + Cognito JWT
Latencia DynamoDB 14–17 ms promedio todas las operaciones
Cold start rate 0,7% 24 de 3.397 invocaciones
Throttles Lambda / DynamoDB 0 últimos 30 días

Datos de CloudWatch · Lambda + API Gateway + DynamoDB · últimos 30 días

El Bushidō de Imaquinaria

Sistema de niveles con multiplicadores de puntos — los multiplicadores no son arbitrarios: están calibrados para que el canje de recompensas sea atractivo exactamente en el volumen de compra promedio del cliente de Imaquinaria.

×1.0 Rōnin
×1.3 Samurai
×1.7 Hatamoto
×2.0 Daimyō
Tier premium KamonStamp cards digitalesSub-niveles con estados mentales Dōjō
FastAPIPython 3.13React 19TypeScriptMangumAWS LambdaAPI GatewayDynamoDBCognitoCloudFrontS3SESCloudWatchSSMAWS SAMGitHub Actions