import path from "node:path"; import type { NextConfig } from "next"; // The API's internal address. The browser never calls it directly: /api is rewritten to it, so the API's session // cookies are first-party on the website's origin. Rewrites are fixed when the app is built, so API_URL must be set // at build time as well as at run time (server components call it directly). const apiURL = process.env.API_URL ?? "http://localhost:4101"; // The monorepo's root: standalone output traces workspace packages from here. const root = path.join(import.meta.dirname, "../.."); const config: NextConfig = { output: "standalone", outputFileTracingRoot: root, turbopack: { root }, // Next's gzip holds back the API's event stream (who's online); compress in front of the app instead (Vercel and // most reverse proxies do). compress: false, agentRules: false, async rewrites() { return [{ source: "/api/:path*", destination: `${apiURL}/api/:path*` }]; }, }; export default config;