153 lines
5.1 KiB
JavaScript
153 lines
5.1 KiB
JavaScript
/** @type {import('next').NextConfig} */
|
|
const nextConfig = {
|
|
output: 'standalone',
|
|
optimizeFonts: false,
|
|
eslint: {
|
|
ignoreDuringBuilds: true,
|
|
},
|
|
typescript: {
|
|
ignoreBuildErrors: true,
|
|
},
|
|
images: {
|
|
unoptimized: true,
|
|
remotePatterns: [
|
|
{
|
|
protocol: 'http',
|
|
hostname: 'localhost',
|
|
port: '3001',
|
|
pathname: '/assets/**',
|
|
},
|
|
{
|
|
protocol: 'https',
|
|
hostname: process.env.NEXT_PUBLIC_STUDIO_DOMAIN || 'studio.norteamericano.com',
|
|
pathname: '/assets/**',
|
|
},
|
|
],
|
|
},
|
|
async rewrites() {
|
|
// Using `fallback` ensures Next.js pages (including dynamic routes like
|
|
// /courses/[id]) are matched BEFORE these proxy rewrites. Without this,
|
|
// `afterFiles` rewrites (the default for arrays) would intercept RSC
|
|
// prefetch requests to dynamic pages and proxy them to Rust instead.
|
|
return {
|
|
fallback: [
|
|
{
|
|
source: '/assets/:path*',
|
|
destination: 'http://localhost:3001/assets/:path*',
|
|
},
|
|
// Proxy API routes to CMS service
|
|
{
|
|
source: '/auth/:path*',
|
|
destination: 'http://localhost:3001/auth/:path*',
|
|
},
|
|
{
|
|
source: '/courses/:path*',
|
|
destination: 'http://localhost:3001/courses/:path*',
|
|
},
|
|
{
|
|
source: '/modules/:path*',
|
|
destination: 'http://localhost:3001/modules/:path*',
|
|
},
|
|
{
|
|
source: '/lessons/:path*',
|
|
destination: 'http://localhost:3001/lessons/:path*',
|
|
},
|
|
{
|
|
source: '/organization/:path*',
|
|
destination: 'http://localhost:3001/organization/:path*',
|
|
},
|
|
{
|
|
source: '/branding/:path*',
|
|
destination: 'http://localhost:3001/branding/:path*',
|
|
},
|
|
{
|
|
source: '/users/:path*',
|
|
destination: 'http://localhost:3001/users/:path*',
|
|
},
|
|
{
|
|
source: '/admin/:path*',
|
|
destination: 'http://localhost:3001/admin/:path*',
|
|
},
|
|
{
|
|
source: '/question-bank/:path*',
|
|
destination: 'http://localhost:3001/question-bank/:path*',
|
|
},
|
|
{
|
|
source: '/knowledge-base/:path*',
|
|
destination: 'http://localhost:3001/knowledge-base/:path*',
|
|
},
|
|
{
|
|
source: '/api/:path*',
|
|
destination: 'http://localhost:3001/api/:path*',
|
|
},
|
|
{
|
|
source: '/webhooks/:path*',
|
|
destination: 'http://localhost:3001/webhooks/:path*',
|
|
},
|
|
{
|
|
source: '/grading/:path*',
|
|
destination: 'http://localhost:3001/grading/:path*',
|
|
},
|
|
{
|
|
source: '/libraries/:path*',
|
|
destination: 'http://localhost:3001/libraries/:path*',
|
|
},
|
|
{
|
|
source: '/rubrics/:path*',
|
|
destination: 'http://localhost:3001/rubrics/:path*',
|
|
},
|
|
{
|
|
source: '/learning-sequences/:path*',
|
|
destination: 'http://localhost:3001/learning-sequences/:path*',
|
|
},
|
|
{
|
|
source: '/audit-logs/:path*',
|
|
destination: 'http://localhost:3001/audit-logs/:path*',
|
|
},
|
|
{
|
|
source: '/analytics/:path*',
|
|
destination: 'http://localhost:3001/analytics/:path*',
|
|
},
|
|
{
|
|
source: '/cohorts/:path*',
|
|
destination: 'http://localhost:3001/cohorts/:path*',
|
|
},
|
|
{
|
|
source: '/announcements/:path*',
|
|
destination: 'http://localhost:3001/announcements/:path*',
|
|
},
|
|
{
|
|
source: '/submissions/:path*',
|
|
destination: 'http://localhost:3001/submissions/:path*',
|
|
},
|
|
{
|
|
source: '/peer-reviews/:path*',
|
|
destination: 'http://localhost:3001/peer-reviews/:path*',
|
|
},
|
|
{
|
|
source: '/instructors/:path*',
|
|
destination: 'http://localhost:3001/instructors/:path*',
|
|
},
|
|
{
|
|
source: '/token-usage/:path*',
|
|
destination: 'http://localhost:3001/token-usage/:path*',
|
|
},
|
|
{
|
|
source: '/sam/:path*',
|
|
destination: 'http://localhost:3001/sam/:path*',
|
|
},
|
|
{
|
|
source: '/embeddings/:path*',
|
|
destination: 'http://localhost:3001/embeddings/:path*',
|
|
},
|
|
{
|
|
source: '/health',
|
|
destination: 'http://localhost:3001/health',
|
|
},
|
|
],
|
|
};
|
|
},
|
|
};
|
|
|
|
export default nextConfig;
|