feat(club-002): club PWA: join flow, digital card and installable shell
This commit is contained in:
52
work/artifacts/CLUB-002/implementer.md
Normal file
52
work/artifacts/CLUB-002/implementer.md
Normal 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`.
|
||||
Reference in New Issue
Block a user