# F-141 — Arquitectura del fix de build Next.js ## Diagnóstico Hay tres aplicaciones Next independientes en el monorepo: - `project/apps/admin` — panel admin. - `project/frontend` — customer frontend, con `/categories` como Server Component async. - `project/storefront` — storefront SEO. `project/frontend` no tenía `turbopack.root` ni `outputFileTracingRoot`. Además, `/categories` declara ISR (`revalidate = 3600`) y ejecuta `fetchCategories()` durante el prerender. Cuando `NEXT_PUBLIC_API_URL` apunta a `192.168.18.93:3000` y el backend no está levantado, el build falla con `ECONNREFUSED`. El error posterior que intenta leer: ```text project/frontend/.next/prerender-manifest.json ``` es una consecuencia de que el build del frontend aborta antes de generar su manifest, no un archivo que deba copiarse desde otra aplicación. ## Diseño 1. Fijar la raíz de Turbopack a cada aplicación: - `project/frontend/next.config.ts`: `turbopack.root = frontendRoot`. - Mantener la configuración equivalente ya aplicada en admin y storefront. 2. Fijar `outputFileTracingRoot` a la raíz de cada app para que Next no recorra el workspace ni confunda `.next` de otra aplicación. 3. Convertir `/categories` a renderizado dinámico (`dynamic = 'force-dynamic'`) porque sus datos dependen del API vivo. Así el build no hace llamadas de negocio al backend; el fetch sucede cuando se atiende la petición. 4. Mantener la fuente de verdad y el contrato API intactos. No introducir mocks, datos paralelos ni fallback de categorías vacío. ## No incluido - No cambiar las URLs del API. - No ocultar errores de runtime. - No modificar `storefront` más allá de la configuración necesaria. - No transformar todos los reportes o dashboards; eso pertenece a F-142. ## Verificación - `cd project/frontend && rm -rf .next && NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build` debe terminar aunque el backend no esté disponible. - La salida no debe seleccionar `project/package-lock.json` ni mostrar el warning de lockfiles. - `project/frontend/.next/prerender-manifest.json` debe existir después del build. - Admin, backend y storefront no deben perder su build.