← back to Handbag Auth Nextjs

next.config.ts

97 lines

import type { NextConfig } from "next";

const nextConfig: NextConfig = {
  images: {
    remotePatterns: [
      // Yahoo Japan Auctions - Primary data source
      {
        protocol: 'https',
        hostname: 'auctions.c.yimg.jp',
      },
      {
        protocol: 'https',
        hostname: 'item-shopping.c.yimg.jp',
      },
      // Mercari Japan
      {
        protocol: 'https',
        hostname: 'static.mercdn.net',
      },
      // Rakuten
      {
        protocol: 'https',
        hostname: 'thumbnail.image.rakuten.co.jp',
      },
      // eBay
      {
        protocol: 'https',
        hostname: 'i.ebayimg.com',
      },
      {
        protocol: 'https',
        hostname: 'thumbs.ebaystatic.com',
      },
      // The RealReal
      {
        protocol: 'https',
        hostname: 'product-images.therealreal.com',
      },
      // Vestiaire Collective
      {
        protocol: 'https',
        hostname: 'images.vestiairecollective.com',
      },
      // Fashionphile
      {
        protocol: 'https',
        hostname: 'fashionphile-media.com',
      },
      // Unsplash (for default/placeholder images)
      {
        protocol: 'https',
        hostname: 'images.unsplash.com',
      },
      {
        protocol: 'https',
        hostname: 'source.unsplash.com',
      },
    ],
    unoptimized: true,
  },
  experimental: {
    serverActions: {
      bodySizeLimit: '10mb',
    },
  },
  // Security headers applied at the framework level
  headers: async () => [
    {
      source: '/:path*',
      headers: [
        {
          key: 'X-Frame-Options',
          value: 'DENY',
        },
        {
          key: 'X-Content-Type-Options',
          value: 'nosniff',
        },
        {
          key: 'X-XSS-Protection',
          value: '1; mode=block',
        },
        {
          key: 'Referrer-Policy',
          value: 'strict-origin-when-cross-origin',
        },
        {
          key: 'Permissions-Policy',
          value: 'geolocation=(), microphone=(), camera=(self)',
        },
      ],
    },
  ],
};

export default nextConfig;