All checks were successful
Build and Push Docker Image / build (push) Successful in 11m12s
Version guard: - Replace API route with prebuild-generated public/build-id.json - Captures build ID on first load, only notifies on mismatch - Fixes false positive refresh prompts from env mismatch Members table (applicants): - Show project name + round badge instead of round name + state - Red badge for rejected, gray for withdrawn, green for passed, outline for active rounds - Include projectName in applicantRoundInfo from backend Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
67 lines
1.5 KiB
TypeScript
67 lines
1.5 KiB
TypeScript
import type { NextConfig } from 'next'
|
|
|
|
const nextConfig: NextConfig = {
|
|
output: 'standalone',
|
|
serverExternalPackages: ['@prisma/client', 'minio'],
|
|
typescript: {
|
|
// We run tsc --noEmit separately before each push
|
|
ignoreBuildErrors: true,
|
|
},
|
|
experimental: {
|
|
optimizePackageImports: [
|
|
'lucide-react',
|
|
'sonner',
|
|
'date-fns',
|
|
'recharts',
|
|
'motion/react',
|
|
'zod',
|
|
'@radix-ui/react-icons',
|
|
],
|
|
},
|
|
images: {
|
|
remotePatterns: [
|
|
{
|
|
protocol: 'https',
|
|
hostname: '*.minio.local',
|
|
},
|
|
],
|
|
},
|
|
async redirects() {
|
|
return [
|
|
// Legacy Pipeline/Stage routes → Competition/Round routes
|
|
{
|
|
source: '/admin/rounds/pipelines',
|
|
destination: '/admin/competitions',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/admin/rounds/pipeline/:path*',
|
|
destination: '/admin/competitions',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/jury/stages',
|
|
destination: '/jury/competitions',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/jury/stages/:path*',
|
|
destination: '/jury/competitions',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/applicant/pipeline',
|
|
destination: '/applicant/competition',
|
|
permanent: true,
|
|
},
|
|
{
|
|
source: '/applicant/pipeline/:path*',
|
|
destination: '/applicant/competition',
|
|
permanent: true,
|
|
},
|
|
]
|
|
},
|
|
}
|
|
|
|
export default nextConfig
|