Monorepo Overview Boost CRM
Propósito
Section titled “Propósito”Concentrar web (Next.js), app (Expo) y paquetes compartidos bajo una sola base de código con trazabilidad completa y evolución incremental sin romper producción web.
Doctrina actual
Section titled “Doctrina actual”- Web es la prioridad operativa del producto.
- Backend sigue siendo la fuente de verdad.
apps/webno solo es frontend: también actúa como BFF oficial de auth mobile y como capa inteligente para proteger y amortiguar a BoostAPI cuando hace falta.packages/*es la capa compartida de contratos, cliente API, normalización y servicios de dominio.- Mobile sale de mocks por slices, después de validar contratos y UX reales en web.
- BoostAPI es dueño operativo de la sesión Zauru y resuelve
/profile.json+/apps/graphql.json. - El monorepo no ejecuta GraphQL directo ni resuelve
graphql.json; solo hace login, snapshot, sync, retry y UI.
Propósito por plataforma
Section titled “Propósito por plataforma”- Web (
apps/web)
- Es el CRM operativo principal para equipos comerciales y administrativos.
- Centraliza la integración productiva más madura y funge como BFF para auth mobile con Zauru.
- También puede servir como capa inteligente de caché corta, agregación, deduplicación y traducción browser-safe, siempre sin reemplazar al backend como fuente de verdad.
- Prioridad: estabilidad en producción y evolución por módulos sin regresiones.
- Mobile (
apps/native)
- Es el cliente de campo para operación móvil con identidad visual y contratos equivalentes a web.
- Prioridad actual: auth, shell base y validación de experiencia móvil sin forzar arquitectura prematura.
- Sale de mocks gradualmente, después de que backend + web hayan validado el contrato y el flujo real.
- Prioridad siguiente: consumo de APIs reales con cache local y capacidad de trabajo offline parcial.
- Shared (
packages/*)
- Define contratos, clientes API, servicios de dominio e iconografía canónica para evitar drift entre plataformas.
- Es donde debe vivir la normalización reusable de backend -> frontend-domain cuando no depende de
Next, [REDACTED]s o sesión web. - Reduce duplicación y permite migraciones graduales de web y mobile sin cortes.
Estructura actual
Section titled “Estructura actual”apps/web: CRM principal en Next.js 16 + React 19.apps/native: app móvil en Expo + React Native + NativeWind.packages/shared-types: contratos de dominio/API/auth.packages/api-client: cliente API con transport mock/real.packages/ui: base de UI compartida en progreso.packages/typescript-config: presets TS del monorepo.
Principios operativos
Section titled “Principios operativos”- Web estable es prioridad; migraciones se hacen por slices.
- Compartir primero contratos y datos; luego UI.
- Mocks son válidos mientras backend todavía construye módulos; el riesgo está en que entren silenciosamente donde ya se esperaba real.
- Auth mobile oficial sigue pasando por BFF web; cualquier expansión de consumo backend debe respetar esa frontera.
- Backend decide negocio y permisos; frontend optimiza consumo, normaliza una vez y pinta por plataforma.
- Toda decisión relevante se registra en ADR.
Flujo de trabajo técnico
Section titled “Flujo de trabajo técnico”- Definir contrato compartido.
- Implementar normalización y shape de dominio en
packages/*. - Integrar primero en web con auth/caché/orquestación específica de plataforma.
- Una vez validado en web, sacar mobile de mocks por slices usando el mismo contrato normalizado.
- Actualizar docs y skill correspondiente.
- Validar pipeline + gates.
Comandos operativos recomendados
Section titled “Comandos operativos recomendados”npm run deves el entrypoint oficial actual y usa modo manual BFF por defecto (BOOST_AUTO_BFF=0).npm run dev:manual-bfflevanta Turbo sin@repo/dev-mobile-bff; ideal cuando quick tunnel está inestable.npm run dev:auto-bffmantiene el flujo automático legacy (quick tunnel), solo opcional.npm run dev:mobile:set-bff-url -- https://<url>.trycloudflare.comsirve para fijar la URL del BFF manualmente.npm run dev:lan --workspace=apps/nativesigue como fallback mínimo de emergencia para Metro.
Estado de madurez
Section titled “Estado de madurez”- Plataforma: en transición activa a arquitectura compartida.
- Web: funcional y estable; combina backend real y mocks explícitos según madurez del módulo.
- Native: auth OAuth funcionando con BFF; sigue mock-first de forma controlada mientras backend + web consolidan contratos.
