/** @type {import('next').NextConfig} */ const apiOrigin = (process.env.API_INTERNAL_URL ?? process.env.API_URL ?? 'http://localhost:4000').replace(/\/api\/v1\/?$/, '') const apiUrl = new URL(apiOrigin) // In Docker dev the admin app runs on port 3002 while the marketplace proxy // serves it from port 3000. When ADMIN_ASSET_PREFIX is set, Next emits // absolute chunk URLs so /admin pages load their JS/CSS and HMR directly from // port 3002, bypassing the proxy (which can't upgrade WebSocket connections). const assetPrefix = process.env.ADMIN_ASSET_PREFIX || undefined const nextConfig = { basePath: '/admin', ...(assetPrefix ? { assetPrefix } : {}), images: { remotePatterns: [ { protocol: 'https', hostname: 'res.cloudinary.com', }, { protocol: apiUrl.protocol.replace(':', ''), hostname: apiUrl.hostname, ...(apiUrl.port ? { port: apiUrl.port } : {}), pathname: '/storage/**', }, ], }, transpilePackages: ['@rentaldrivego/types'], async rewrites() { return [ { source: '/api/:path*', destination: `${apiOrigin}/api/:path*`, }, ] }, } module.exports = nextConfig