Files
mercadodevida/work/artifacts/F-141/architect.md
2026-08-21 22:02:01 +02:00

2.1 KiB

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:

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.