Frontend: datos e integraciones
Como viajan los datos
El frontend consume principalmente informacion del backend REST y la combina con infraestructura de Firebase.
La secuencia normal es:
- la pantalla dispara una accion
- el hook de feature organiza la peticion
- el service hace la llamada HTTP
apiClientagrega headers e intercepta errores- React Query cachea o invalida segun el caso
apiClient
src/config/apiClient.ts centraliza la capa HTTP.
Sus responsabilidades principales son:
- usar
VITE_BACKEND_URL - enviar
Authorizationcuando hay sesion - inyectar
businessIdcuando aplica - mostrar feedback global
- reaccionar a errores
401y403
Contexto del negocio en requests
Cuando existe membresia activa y la ruta esta dentro del panel del negocio:
- el frontend agrega
businessId - los servicios consultan o mutan informacion de ese tenant
Esto es clave porque Cutlyy es multiempresa.
Integraciones del lado cliente
Firebase Auth
Se usa para:
- mantener la sesion primaria
- obtener el token que luego valida el backend
Firestore
Se usa para listeners en tiempo real sobre:
- membresia activa
- permisos del rol activo
Firebase Storage
Se usa en flujos de carga de imagenes y archivos asociados a perfiles o negocio.
Firebase Messaging
Se usa para push web cuando:
- el navegador lo soporta
- la persona otorga permisos
- la app esta instalada como PWA
- existe configuracion VAPID valida
Google Maps
Se usa sobre todo para formularios y experiencia de sedes:
- autocompletado
- ubicacion
- coordenadas
Variables de entorno esperadas
| Variable | Uso |
|---|---|
VITE_BACKEND_URL | Base URL del backend |
VITE_FIREBASE_API_KEY | Configuracion cliente de Firebase |
VITE_FIREBASE_AUTH_DOMAIN | Auth de Firebase |
VITE_FIREBASE_PROJECT_ID | Proyecto Firebase |
VITE_FIREBASE_STORAGE_BUCKET | Storage |
VITE_FIREBASE_MESSAGING_SENDER_ID | Messaging |
VITE_FIREBASE_APP_ID | App Firebase |
VITE_FIREBASE_VAPID_KEY | Push web |
VITE_GOOGLE_MAPS_API_KEY | Google Maps |
VITE_PUSH_NOTIFICATIONS_ENABLED | Feature flag de push |
Setup local minimo
npm install
npm run dev
Validaciones recomendadas antes de cerrar cambios:
npm run typecheck
npm run lint
npm run build:check
Hosting y Firebase CLI
El frontend tiene configuracion de Firebase Hosting en firebase.json, pero .firebaserc se mantiene local y no versionado.
La politica actual recomendada es:
- usar aliases locales como
devyprod - no definir alias
default - desplegar de forma explicita para evitar errores
Ejemplos:
firebase use dev
firebase deploy
o:
firebase deploy --project dev
Puntos de integracion sensibles
- auth y claims del token
- header
businessId - listeners de Firestore
- registro y limpieza de suscripciones push
- llaves de Google Maps y VAPID
Riesgos actuales
- si cambia el contrato del backend, muchos hooks dependen de esa compatibilidad
- si falla la resolucion de usuario o membresia activa, la sesion puede cerrarse
- el frontend hace validaciones utiles, pero la proteccion final sigue del lado del backend