import { withSentryConfig } from "@sentry/nextjs"; import type { NextConfig } from "next"; import createNextIntlPlugin from "next-intl/plugin"; import createMDX from "@next/mdx"; const withNextIntl = createNextIntlPlugin("./src/i18n/request.ts"); const withMDX = createMDX({ extension: /\.mdx?$/, }); const nextConfig: NextConfig = { pageExtensions: ["js", "jsx", "md", "mdx", "ts", "tsx"], reactCompiler: true, // Configure webpack for raw imports webpack: (config) => { config.module.rules.push({ resourceQuery: /raw/, type: 'asset/source', }); return config; }, // Enable standalone output for Docker output: "standalone", // Experimental features experimental: { // Enable server actions serverActions: { bodySizeLimit: "2mb", }, }, // Image optimization images: { remotePatterns: [ { protocol: "https", hostname: "**", }, ], }, // Redirects async redirects() { return [ { source: "/vibe", destination: "/categories/vibe", permanent: true, }, { source: "/sponsors", destination: "/categories/sponsors", permanent: true, }, { source: "/embed-preview", destination: "/embed", permanent: true, }, // Redirect book PDF downloads to GitHub raw to save Vercel edge bandwidth { source: "/book-pdf/:filename", destination: "https://raw.githubusercontent.com/f/prompts.chat/refs/heads/main/public/book-pdf/:filename", permanent: false, }, ]; }, }; export default withSentryConfig(withMDX(withNextIntl(nextConfig)), { // For all available options, see: // https://www.npmjs.com/package/@sentry/webpack-plugin#options org: "promptschat", project: "prompts-chat", // Only print logs for uploading source maps in CI silent: !process.env.CI, // For all available options, see: // https://docs.sentry.io/platforms/javascript/guides/nextjs/manual-setup/ // Upload a larger set of source maps for prettier stack traces (increases build time) widenClientFileUpload: true, // Route browser requests to Sentry through a Next.js rewrite to circumvent ad-blockers. // This can increase your server load as well as your hosting bill. // Note: Check that the configured route will not match with your Next.js middleware, otherwise reporting of client- // side errors will fail. tunnelRoute: "/monitoring", webpack: { // Enables automatic instrumentation of Vercel Cron Monitors. (Does not yet work with App Router route handlers.) // See the following for more information: // https://docs.sentry.io/product/crons/ // https://vercel.com/docs/cron-jobs automaticVercelMonitors: true, // Tree-shaking options for reducing bundle size treeshake: { // Automatically tree-shake Sentry logger statements to reduce bundle size removeDebugLogging: true, }, }, });