FAQ General Boost CRM
¿Qué es Boost CRM?
Section titled “¿Qué es Boost CRM?”Es un monorepo que contiene el CRM web, la app móvil y paquetes compartidos para contratos, cliente API y base de UI.
¿Por qué usamos monorepo?
Section titled “¿Por qué usamos monorepo?”Para compartir contratos/lógica, reducir duplicación y mantener trazabilidad transversal entre plataformas.
¿Dónde vive la fuente de verdad?
Section titled “¿Dónde vive la fuente de verdad?”En docs/internal para operación completa. apps/docs es la publicación externa saneada.
¿Qué no debo tocar sin análisis?
Section titled “¿Qué no debo tocar sin análisis?”proxy.ts, configuración de sesión/auth, y límites de paquetes en turbo.json y workspaces.
Backend (BoostAPI)
Section titled “Backend (BoostAPI)”¿Qué es BoostAPI?
Section titled “¿Qué es BoostAPI?”Es el backend del CRM, construido con NestJS 11 + TypeScript + MySQL 8 (TypeORM). Se despliega en Render como web service independiente del monorepo frontend. No renderiza UI; solo expone una API REST consumida por el frontend via BFF.
¿Cómo se autentica el usuario?
Section titled “¿Cómo se autentica el usuario?”- El usuario hace login via Zauru OAuth en el frontend.
- El frontend envía email + password + entity_id a
POST /api/auth/loginen BoostAPI. - BoostAPI verifica credenciales (bcrypt) y devuelve un JWT con 8 horas de expiración.
- El JWT contiene: user id, email, role, entity_id, employee_id, permisos (se re-resuelven en cada request).
¿Cómo funciona el RBAC?
Section titled “¿Cómo funciona el RBAC?”Tres capas de suscripción (employee, user-entity, user-global). 44 permisos organizados en 5 módulos: Cartera, Registros, Catálogo, Configuración, Administración. Los permisos se verifican en cada request re-consultando la BD (no se cachean en el JWT). El decorador @Authentication('permiso.codigo') combina JWT guard + verificación de permiso en un solo paso.
¿Cómo funciona WhatsApp / mensajería?
Section titled “¿Cómo funciona WhatsApp / mensajería?”BoostAPI recibe webhooks del servicio externo de Communications (que a su vez recibe de Meta). Los mensajes se proyectan a estado local (MySQL), se emiten via WebSocket (Socket.IO namespace /interactions) y se distribuyen a agentes via round-robin con colas y filtros de routing.
¿Dónde veo la API interactiva (Swagger)?
Section titled “¿Dónde veo la API interactiva (Swagger)?”En {BOOST_API_URL}/api. En desarrollo local: http://localhost:3003/api. Swagger documenta todos los endpoints con schemas de request/response.
¿Qué es Pulpito?
Section titled “¿Qué es Pulpito?”Es el módulo de cache en memoria de BoostAPI. Implementa stale-while-revalidate, singleflight (deduplicación de fetches concurrentes) e invalidación por tags. Se usa principalmente para cachear datos de catálogo de Zauru y evitar queries repetitivas al ERP.
¿Cómo se comunica el frontend con BoostAPI?
Section titled “¿Cómo se comunica el frontend con BoostAPI?”El frontend (Next.js) NO llama a BoostAPI directamente desde el browser. Usa una capa BFF (Backend For Frontend) server-side que hace las llamadas a BoostAPI, agrega caché corta, deduplicación y traducción de errores browser-safe. La app nativa (Expo) también pasa por el BFF web.
¿Cómo se despliega BoostAPI?
Section titled “¿Cómo se despliega BoostAPI?”En Render como web service. Build: yarn build:render, Start: yarn start:render. Tres modos de runtime: dev (local), preview (staging con Zauru Heroku forzado), prod (producción con Zauru real). Render inyecta RENDER_EXTERNAL_URL automáticamente.
¿Cuál es el flujo de desarrollo típico en backend?
Section titled “¿Cuál es el flujo de desarrollo típico en backend?”- Clonar el repo BoostAPI (separado del monorepo).
yarn install+cp .env.template .env+ configurar variables.yarn start:devpara hot-reload.yarn seed:dev:allpara datos de desarrollo.- Swagger en
localhost:3003/apipara testing. - Para webhooks en dev: activar
COMMUNICATIONS_DEV_TUNNEL_ENABLED=true(Cloudflare Quick Tunnel).
