diff --git a/website/next.config.ts b/website/next.config.ts index 7729e1a1..7f409b0a 100644 --- a/website/next.config.ts +++ b/website/next.config.ts @@ -24,7 +24,7 @@ const nextConfig: NextConfig = { headers: [ { key: 'Content-Security-Policy', - value: "default-src 'self'; script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' https://img.shields.io https://goreportcard.com https://*.shields.io data:; connect-src 'self' https://*.sentry.io; worker-src 'self' blob:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'", + value: "default-src 'self'; script-src 'self' 'unsafe-inline' 'wasm-unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self'; img-src 'self' https://img.shields.io https://goreportcard.com https://*.shields.io data:; connect-src 'self' https://*.sentry.io https://vitals.vercel-insights.com; worker-src 'self' blob:; frame-ancestors 'none'; base-uri 'self'; form-action 'self'", }, { key: 'Strict-Transport-Security', diff --git a/website/package-lock.json b/website/package-lock.json index 13287f60..1bc97fb9 100644 --- a/website/package-lock.json +++ b/website/package-lock.json @@ -16,6 +16,7 @@ "@sentry/nextjs": "^10.43.0", "@tailwindcss/typography": "^0.5.19", "@vercel/analytics": "^2.0.1", + "@vercel/speed-insights": "^2.0.0", "codemirror": "^6.0.2", "framer-motion": "^12.36.0", "fuse.js": "^7.1.0", @@ -3403,6 +3404,44 @@ } } }, + "node_modules/@vercel/speed-insights": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-2.0.0.tgz", + "integrity": "sha512-jwkNcrTeafWxjmWq4AHBaptSqZiJkYU5adLC9QBSqeim0GcqDMgN5Ievh8OG1rJ6W3A4l1oiP7qr9CWxGuzu3w==", + "license": "Apache-2.0", + "peerDependencies": { + "@sveltejs/kit": "^1 || ^2", + "next": ">= 13", + "nuxt": ">= 3", + "react": "^18 || ^19 || ^19.0.0-rc", + "svelte": ">= 4", + "vue": "^3", + "vue-router": "^4" + }, + "peerDependenciesMeta": { + "@sveltejs/kit": { + "optional": true + }, + "next": { + "optional": true + }, + "nuxt": { + "optional": true + }, + "react": { + "optional": true + }, + "svelte": { + "optional": true + }, + "vue": { + "optional": true + }, + "vue-router": { + "optional": true + } + } + }, "node_modules/@webassemblyjs/ast": { "version": "1.14.1", "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", diff --git a/website/package.json b/website/package.json index 2d4f9ceb..697f875b 100644 --- a/website/package.json +++ b/website/package.json @@ -13,13 +13,14 @@ }, "dependencies": { "@codemirror/lang-sql": "^6.10.0", - "@lezer/highlight": "^1.2.3", "@codemirror/state": "^6.6.0", "@codemirror/theme-one-dark": "^6.1.3", "@codemirror/view": "^6.40.0", + "@lezer/highlight": "^1.2.3", "@sentry/nextjs": "^10.43.0", "@tailwindcss/typography": "^0.5.19", "@vercel/analytics": "^2.0.1", + "@vercel/speed-insights": "^2.0.0", "codemirror": "^6.0.2", "framer-motion": "^12.36.0", "fuse.js": "^7.1.0", diff --git a/website/src/app/layout.tsx b/website/src/app/layout.tsx index 4f790987..aea88246 100644 --- a/website/src/app/layout.tsx +++ b/website/src/app/layout.tsx @@ -3,6 +3,8 @@ import { instrumentSans, jetbrainsMono } from '@/lib/fonts'; import { Navbar } from '@/components/layout/Navbar'; import { Footer } from '@/components/layout/Footer'; import { ServiceWorkerRegister } from '@/components/ServiceWorkerRegister'; +import { Analytics } from '@vercel/analytics/next'; +import { SpeedInsights } from '@vercel/speed-insights/next'; import './globals.css'; export const metadata: Metadata = { @@ -91,6 +93,8 @@ export default function RootLayout({
{children}