feat(club-002): club PWA: join flow, digital card and installable shell

This commit is contained in:
Deploy
2026-08-26 19:21:49 +02:00
parent b2ccc70dc6
commit c263b44355
20 changed files with 1059 additions and 100 deletions

View File

@@ -0,0 +1,52 @@
# Implementer evidence — CLUB-002
## Resumen
Implementé la primera superficie frontend/PWA del Club sobre el backend de CLUB-001.
## Qué se añadió
### 1) Proxy Next.js para Club
- `project/frontend/src/app/api/club/[...path]/route.ts`
Función:
- reenviar `GET/POST/PATCH` al backend
- propagar cookies entrantes
- reenviar `set-cookie` del backend para conservar `mdv_club` same-origin
### 2) Rutas frontend del Club
- `project/frontend/src/app/club/page.tsx`
- `project/frontend/src/app/club/join/page.tsx`
- `project/frontend/src/app/club/card/page.tsx`
- `project/frontend/src/components/club/ClubExperience.tsx`
Comportamiento:
- landing Club
- alta anónima desde `POST /api/club/join`
- tarjeta digital con `memberCode`, saldo y movimientos recientes
- CTA para abrir la tarjeta cuando ya existe identidad Club en el dispositivo
- bloque de instalación PWA usando `beforeinstallprompt`
### 3) Manifest e iconos PWA
- `project/frontend/src/app/manifest.ts`
- `project/frontend/public/images/club-icon-192.png`
- `project/frontend/public/images/club-icon-512.png`
Además:
- `project/frontend/src/app/layout.tsx` ahora declara manifest + metadata Apple Web App + viewport themeColor.
### 4) Descubribilidad en storefront
- enlace `Club` añadido en header y footer.
## Decisiones de implementación
- Reutilicé un único componente cliente `ClubExperience` para `/club`, `/club/join` y `/club/card`.
- El frontend consume el backend Club vía proxy Next same-origin para que la cookie `mdv_club` quede gestionada correctamente por el navegador.
- La tarjeta muestra una credencial visual móvil basada en `memberCode` y deja el contrato final de lectura en caja para CLUB-003, como estaba previsto en la fase TPV.
## Validación ejecutada
- `cd project/frontend && npm run build`
- `./scripts/verify.sh`
- `git diff --check`
## Riesgos / siguiente paso
- CLUB-003 debe cerrar el contrato exacto de identificación en TPV/caja para usar la tarjeta digital también en escaneo/lectura operativa.
- Conviene hacer smoke manual real en navegador/móvil para comprobar el prompt de instalación y la persistencia de `mdv_club` después de `POST /club/join`.