import type { NextConfig } from "next"; function publicAppHostname(): string | null { const url = process.env.NEXT_PUBLIC_APP_URL; if (!url) return null; try { return new URL(url).hostname; } catch { return null; } } const appHost = publicAppHostname(); /** @type {import('next').NextConfig} */ const nextConfig = { // Enable React strict mode reactStrictMode: true, // Disable x-powered-by header for security poweredByHeader: false, // Configure allowed remote image sources (hostname derived from NEXT_PUBLIC_APP_URL at build time) images: { remotePatterns: [ { protocol: "http", hostname: "localhost" }, ...(appHost ? [ { protocol: "http" as const, hostname: appHost }, { protocol: "https" as const, hostname: appHost }, ] : []), { protocol: "https", hostname: "dyolink.com" }, { protocol: "https", hostname: "www.dyolink.com" }, ], }, // Environment variables that will be available at build time env: { NEXT_PUBLIC_APP_NAME: process.env.NEXT_PUBLIC_APP_NAME, NEXT_PUBLIC_APP_URL: process.env.NEXT_PUBLIC_APP_URL, NEXT_PUBLIC_API_URL: process.env.NEXT_PUBLIC_API_URL, }, // Output configuration output: 'standalone', // Reduces Docker image size // Compress with gzip compress: true, } module.exports = nextConfig