Spaces:
Paused
Paused
| /** @type {import('next').NextConfig} */ | |
| const nextConfig = { | |
| reactStrictMode: true, | |
| output: "standalone", | |
| env: { | |
| NEXT_PUBLIC_API_BASE: process.env.NEXT_PUBLIC_API_BASE || "http://localhost:8000", | |
| }, | |
| // Single-container deployments (e.g. a Hugging Face Space) run the API and | |
| // web server in the same container with only one port exposed publicly. | |
| // Setting AURALYNQ_INTERNAL_API_URL makes Next.js itself proxy /api/* to the | |
| // API process over localhost, so NEXT_PUBLIC_API_BASE can stay "/api" with | |
| // no separate reverse proxy (Caddy/nginx) needed. Unset in every other run | |
| // mode (no-Podman, Podman+Caddy, remote server) — this is a no-op there. | |
| async rewrites() { | |
| const target = process.env.AURALYNQ_INTERNAL_API_URL; | |
| if (!target) return []; | |
| return [ | |
| // ModelFit is the one router mounted with a real /api/modelfit prefix | |
| // in auralynq/modelfit/router.py — forward it unchanged. Every other | |
| // backend route (health, status, ingest, query, ...) has no /api | |
| // prefix at all, so it must be stripped for those (see the second, | |
| // more general rule below). Order matters: this must be listed first. | |
| { source: "/api/modelfit/:path*", destination: `${target}/api/modelfit/:path*` }, | |
| { source: "/api/:path*", destination: `${target}/:path*` }, | |
| ]; | |
| }, | |
| }; | |
| module.exports = nextConfig; | |