diff --git a/next.config.js b/next.config.js new file mode 100644 index 0000000..ba5e395 --- /dev/null +++ b/next.config.js @@ -0,0 +1,72 @@ +/** @type {import('next').NextConfig} */ +const nextConfig = { + images: { + remotePatterns: [ + { + protocol: 'https', + hostname: 'webuild-dev.s3.eu-north-1.amazonaws.com', + pathname: '/**', + }, + { + protocol: 'https', + hostname: '*.cloudinary.com', + pathname: '/**', + }, + { + protocol: 'https', + hostname: 'images.unsplash.com', + pathname: '/**', + }, + ], + unoptimized: false, + formats: ['image/avif', 'image/webp'], + deviceSizes: [320, 420, 640, 768, 1024, 1280, 1536], + imageSizes: [16, 32, 48, 64, 96, 128, 256, 384], + }, + compress: true, + swcMinify: true, + reactStrictMode: true, + poweredByHeader: false, + productionBrowserSourceMaps: false, + experimental: { + optimizePackageImports: [ + '@radix-ui/react-dialog', + '@radix-ui/react-dropdown-menu', + '@radix-ui/react-slider', + 'lucide-react', + ], + }, + headers: async () => [ + { + source: '/:path*', + headers: [ + { + key: 'X-DNS-Prefetch-Control', + value: 'on', + }, + { + key: 'X-Frame-Options', + value: 'SAMEORIGIN', + }, + { + 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=()', + }, + ], + }, + ], +}; + +module.exports = nextConfig; \ No newline at end of file diff --git a/src/app/about/page.tsx b/src/app/about/page.tsx new file mode 100644 index 0000000..32a8ec5 --- /dev/null +++ b/src/app/about/page.tsx @@ -0,0 +1,40 @@ +"use client"; + +import { ThemeProvider } from "@/providers/themeProvider/ThemeProvider"; +import MediaAbout from "@/components/sections/about/MediaAbout"; + +const AboutPage = () => { + return ( + +