# F-141 — Implementer evidence ## Cambios realizados - `project/frontend/next.config.ts` - Añadidos `turbopack.root` y `outputFileTracingRoot`, ambos fijados a `frontendRoot`. - El frontend ya no hereda la raíz de workspace de `project/package-lock.json` ni intenta mezclar el `.next` de `frontend` con otra aplicación. - Rutas del customer frontend que consultan catálogo/CMS en servidor: - `src/app/page.tsx` - `src/app/categories/page.tsx` - `src/app/categories/[slug]/page.tsx` - `src/app/brands/page.tsx` - `src/app/brands/[slug]/page.tsx` - `src/app/products/page.tsx` - `src/app/products/[slug]/page.tsx` - `src/app/admin/products/page.tsx` - Se cambió ISR estático (`revalidate = 3600`) por `dynamic = 'force-dynamic'` donde los datos son obligatorios. - `/search` ya era dinámico y no requirió cambios. ## Motivo técnico `/categories` ejecutaba `fetchCategories()` durante el prerender estático. Con `NEXT_PUBLIC_API_URL=http://192.168.18.93:3000` y backend apagado, Next abortaba el build con `ECONNREFUSED`. Convertir las páginas dependientes de API en dinámicas mantiene la fuente de verdad en el backend y traslada el fetch al request runtime; no añade mocks ni datos paralelos. El error posterior de `frontend/.next/prerender-manifest.json` era consecuencia del build abortado antes de escribir el manifest. Tras el build correcto el archivo vuelve a existir. ## Verificación ```text cd project/frontend rm -rf .next NEXT_PUBLIC_API_URL=http://192.168.18.93:3000 npm run build ✅ ``` Resultado frontend: - sin warning de múltiples lockfiles; - sin `ECONNREFUSED`; - sin error de prerender `/categories` ni `/brands`; - TypeScript correcto; - `project/frontend/.next/prerender-manifest.json` presente; - rutas de catálogo aparecen como `ƒ` (server-rendered on demand). También verificado: ```text project/apps/admin: npm run build ✅ project/storefront: npm run build ✅ project/frontend: npx tsc --noEmit ✅ ./scripts/verify.sh ✅ ``` No se modificaron contratos API ni el backend. La aplicación sigue obteniendo ventas/catálogo del sistema real en runtime.