# 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.
