mirror of
https://github.com/johndoe6345789/metabuilder.git
synced 2026-04-25 22:34:56 +00:00
95 lines
2.5 KiB
TypeScript
95 lines
2.5 KiB
TypeScript
import type { NextConfig } from 'next'
|
|
import path from 'path'
|
|
|
|
const nextConfig: NextConfig = {
|
|
reactStrictMode: true,
|
|
|
|
// Standalone output for Docker
|
|
output: 'standalone',
|
|
|
|
// Configure page extensions
|
|
pageExtensions: ['ts', 'tsx', 'js', 'jsx', 'md', 'mdx'],
|
|
|
|
// Experimental features
|
|
experimental: {
|
|
// Enable React Server Components
|
|
serverActions: {
|
|
bodySizeLimit: '2mb',
|
|
allowedOrigins: ['localhost:3000'],
|
|
},
|
|
// Optimize package imports
|
|
optimizePackageImports: [
|
|
'@mui/material',
|
|
'@mui/icons-material',
|
|
'@mui/x-data-grid',
|
|
'@mui/x-date-pickers',
|
|
'recharts',
|
|
'd3',
|
|
],
|
|
},
|
|
|
|
// Image optimization configuration
|
|
images: {
|
|
formats: ['image/avif', 'image/webp'],
|
|
dangerouslyAllowSVG: true,
|
|
contentDispositionType: 'attachment',
|
|
contentSecurityPolicy: "default-src 'self'; script-src 'none'; sandbox;",
|
|
remotePatterns: [
|
|
{
|
|
protocol: 'https',
|
|
hostname: 'avatars.githubusercontent.com',
|
|
},
|
|
{
|
|
protocol: 'https',
|
|
hostname: '**.githubusercontent.com',
|
|
},
|
|
],
|
|
},
|
|
|
|
// Turbopack configuration (empty for now, migrations from webpack can be added later)
|
|
turbopack: {},
|
|
|
|
// Redirects for old routes (if needed)
|
|
async redirects() {
|
|
return []
|
|
},
|
|
|
|
// Headers for security and CORS
|
|
async headers() {
|
|
return [
|
|
{
|
|
source: '/api/:path*',
|
|
headers: [
|
|
{ key: 'Access-Control-Allow-Credentials', value: 'true' },
|
|
{ key: 'Access-Control-Allow-Origin', value: '*' },
|
|
{ key: 'Access-Control-Allow-Methods', value: 'GET,DELETE,PATCH,POST,PUT' },
|
|
{ key: 'Access-Control-Allow-Headers', value: 'X-CSRF-Token, X-Requested-With, Accept, Accept-Version, Content-Length, Content-MD5, Content-Type, Date, X-Api-Version' },
|
|
],
|
|
},
|
|
]
|
|
},
|
|
|
|
// TypeScript configuration
|
|
typescript: {
|
|
// Dangerously allow production builds to successfully complete even if
|
|
// your project has type errors.
|
|
ignoreBuildErrors: false,
|
|
},
|
|
|
|
// Environment variables exposed to browser
|
|
env: {
|
|
NEXT_PUBLIC_DBAL_API_URL: process.env.DBAL_API_URL || 'http://localhost:8080',
|
|
NEXT_PUBLIC_DBAL_WS_URL: process.env.DBAL_WS_URL || 'ws://localhost:50051',
|
|
NEXT_PUBLIC_DBAL_API_KEY: process.env.DBAL_API_KEY || '',
|
|
},
|
|
webpack(config) {
|
|
config.resolve.alias = {
|
|
...config.resolve.alias,
|
|
'@/dbal': path.resolve(__dirname, '..', 'dbal', 'ts', 'src'),
|
|
}
|
|
return config
|
|
},
|
|
}
|
|
|
|
export default nextConfig
|