Packages totales
7
3 apps · 4 packages
Herramientas detectadas
2
Turborepo · pnpm workspaces
Ciclos de dependencia
0
Sin ciclos · grafo acíclico
Fases de build
4
Orden topológico calculado
🔗
Grafo de dependencias internas
7 nodesApps
@nutriflow/web
→
@nutriflow/ui
@nutriflow/types
@nutriflow/api-client
@nutriflow/config
@nutriflow/api
→
@nutriflow/types
@nutriflow/config
@nutriflow/dashboard
→
@nutriflow/ui
@nutriflow/types
@nutriflow/api-client
@nutriflow/config
Packages
@nutriflow/ui
→
@nutriflow/types
@nutriflow/config
@nutriflow/api-client
→
@nutriflow/types
@nutriflow/config
@nutriflow/types
→
@nutriflow/config
@nutriflow/config
→
sin dependencias internas
💥
Blast radius — impacto de cambios
crítico
Número de packages afectados (directo + transitivo) al cambiar cada package.
@nutriflow/config
6 / 6
TODOS los packages
@nutriflow/types
5 / 6
ui, api-client, web, api, dashboard
@nutriflow/ui
2 / 6
web, dashboard
@nutriflow/api-client
2 / 6
web, dashboard
@nutriflow/web
0 / 6
app hoja (sin dependientes)
@nutriflow/api
0 / 6
app hoja (sin dependientes)
@nutriflow/dashboard
0 / 6
app hoja (sin dependientes)
📊
Diagrama Mermaid (para CLAUDE.md)
copy-ready
%% NutriFlow — Internal Dependency Graph
%% Generated: 2026-06-12 | Herramienta: navegador-monorepo
graph TD
%% — Apps —
WEB["📦 @nutriflow/web
Next.js 14"] API["📦 @nutriflow/api
Fastify"] DASH["📦 @nutriflow/dashboard
Vite + React"] %% — Packages — UI["🎨 @nutriflow/ui
Design System"] TYPES["🔷 @nutriflow/types
TS Types + Zod"] CLIENT["🔌 @nutriflow/api-client
SDK"] CFG["⚙️ @nutriflow/config
ESLint/TS/Prettier"] %% — Edges — WEB --> UI WEB --> TYPES WEB --> CLIENT API --> TYPES DASH --> UI DASH --> TYPES DASH --> CLIENT UI --> TYPES CLIENT --> TYPES TYPES --> CFG UI --> CFG CLIENT --> CFG
Next.js 14"] API["📦 @nutriflow/api
Fastify"] DASH["📦 @nutriflow/dashboard
Vite + React"] %% — Packages — UI["🎨 @nutriflow/ui
Design System"] TYPES["🔷 @nutriflow/types
TS Types + Zod"] CLIENT["🔌 @nutriflow/api-client
SDK"] CFG["⚙️ @nutriflow/config
ESLint/TS/Prettier"] %% — Edges — WEB --> UI WEB --> TYPES WEB --> CLIENT API --> TYPES DASH --> UI DASH --> TYPES DASH --> CLIENT UI --> TYPES CLIENT --> TYPES TYPES --> CFG UI --> CFG CLIENT --> CFG
🏗️
Orden de build (topológico)
4 fases1
Base · sin dependencias internas
@nutriflow/config
2
Tipos · depende solo de config
@nutriflow/types
3
Librerías · dependen de types
@nutriflow/ui
@nutriflow/api-client
4
Apps · consumen todo · builds en paralelo
@nutriflow/web
@nutriflow/api
@nutriflow/dashboard
Tiempo estimado con caché remota
Sin caché: ~4.2 min · Con Turborepo remote cache: ~28 seg (solo packages afectados)
⚡
Comandos CI recomendados
GitHub ActionsBuilds y tests selectivos para PRs — solo packages afectados por el cambio:
# CI: build solo affected (vs. main)
$ turbo run build --filter=...[origin/main]
# CI: tests solo affected
$ turbo run test --filter=...[origin/main]
# Blast radius: qué cambia si modifico @nutriflow/types
$ turbo run build --filter=...@nutriflow/types --dry
# Solo dashboard (feature branch isolado)
$ turbo run dev --filter=@nutriflow/dashboard...
# Publish con changesets (coordina versiones)
$ pnpm changeset
$ pnpm changeset version
$ pnpm changeset publish
⚠️
Alertas y recomendaciones
3 hallazgos
@nutriflow/config tiene blast radius 100%
Cualquier cambio en config (ESLint, TSConfig) invalida toda la caché de Turborepo. Extrae solo los configs que cambian frecuentemente a sub-packages separados.
@nutriflow/types afecta 5 de 6 packages
Splits recomendados: @nutriflow/types-api y @nutriflow/types-ui para reducir blast radius. Las apps solo importan lo que necesitan.
CLAUDE.md raíz no documentado
Crear un CLAUDE.md en la raíz mapeando cada package, sus owners y reglas ("No tocar apps/api cuando trabajas en apps/web"). Reduce errores cross-package en sesiones de Claude Code.