import { imageHosts } from './image-hosts.config.js'; /** @type {import('next').NextConfig} */ const nextConfig = { productionBrowserSourceMaps: true, distDir: process.env.DIST_DIR || '.next', typescript: { ignoreBuildErrors: true, }, eslint: { ignoreDuringBuilds: true, }, images: { remotePatterns: imageHosts, formats: ['image/avif', 'image/webp'], minimumCacheTTL: 86400, deviceSizes: [640, 750, 828, 1080, 1200, 1920], imageSizes: [16, 32, 48, 64, 96, 128, 256, 384], }, // Performance: compress responses compress: true, // Performance: power headers for caching static assets async headers() { return [ { source: '/assets/:path*', headers: [ { key: 'Cache-Control', value: 'public, max-age=31536000, immutable' }, ], }, { source: '/_next/static/:path*', headers: [ { key: 'Cache-Control', value: 'public, max-age=31536000, immutable' }, ], }, { source: '/_next/image/:path*', headers: [ { key: 'Cache-Control', value: 'public, max-age=86400, stale-while-revalidate=604800' }, ], }, ]; }, async redirects() { return [ // Root redirect { source: '/', destination: '/home-page', permanent: false, }, // WordPress admin redirects for broadcastbeat.com (301 permanent) { source: '/wp-admin', destination: '/admin', permanent: true, }, { source: '/wp-admin/', destination: '/admin', permanent: true, }, { source: '/wp-admin/post-new.php', destination: '/contributor', permanent: true, }, { source: '/wp-admin/edit.php', destination: '/admin/articles', permanent: true, }, { source: '/wp-admin/profile.php', destination: '/account', permanent: true, }, { source: '/wp-login.php', destination: '/login', permanent: true, }, { source: '/wp-login.php/:path*', destination: '/login', permanent: true, }, // Catch-all for any other wp-admin sub-paths { source: '/wp-admin/:path*', destination: '/admin', permanent: true, }, // AV Beat dashboard redirect (avbeat.com/wp-admin/ → unified dashboard) // These are handled by the same Next.js app when serving avbeat.com { source: '/avbeat/wp-admin', destination: '/admin', permanent: true, }, { source: '/avbeat/wp-admin/', destination: '/admin', permanent: true, }, { source: '/avbeat/wp-login.php', destination: '/login', permanent: true, }, { source: '/avbeat/wp-login.php/:path*', destination: '/login', permanent: true, }, // Login aliases { source: '/login', destination: '/login', permanent: false, }, ]; } }; export default nextConfig;