← 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;