diff --git a/frontend/app/layout.tsx b/frontend/app/layout.tsx
index 6f23f81..0de3026 100644
--- a/frontend/app/layout.tsx
+++ b/frontend/app/layout.tsx
@@ -2,6 +2,7 @@ import type { Metadata } from "next";
import { Geist, Geist_Mono } from "next/font/google";
import "./globals.css";
import { AuthProvider } from "./providers";
+import { SpeedInsights } from "@vercel/speed-insights/next";
const geistSans = Geist({
variable: "--font-geist-sans",
@@ -26,6 +27,7 @@ export default function RootLayout({ children }: { children: React.ReactNode })
{children}
+
);
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 0989cf3..6f0ec19 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -17,6 +17,7 @@
"@supabase/ssr": "^0.8.0",
"@supabase/supabase-js": "^2.95.2",
"@vercel/analytics": "1.3.1",
+ "@vercel/speed-insights": "^1.3.1",
"class-variance-authority": "^0.7.1",
"clsx": "^2.1.1",
"lucide-react": "^0.454.0",
@@ -2930,6 +2931,40 @@
}
}
},
+ "node_modules/@vercel/speed-insights": {
+ "version": "1.3.1",
+ "resolved": "https://registry.npmjs.org/@vercel/speed-insights/-/speed-insights-1.3.1.tgz",
+ "integrity": "sha512-PbEr7FrMkUrGYvlcLHGkXdCkxnylCWePx7lPxxq36DNdfo9mcUjLOmqOyPDHAOgnfqgGGdmE3XI9L/4+5fr+vQ==",
+ "license": "Apache-2.0",
+ "peerDependencies": {
+ "@sveltejs/kit": "^1 || ^2",
+ "next": ">= 13",
+ "react": "^18 || ^19 || ^19.0.0-rc",
+ "svelte": ">= 4",
+ "vue": "^3",
+ "vue-router": "^4"
+ },
+ "peerDependenciesMeta": {
+ "@sveltejs/kit": {
+ "optional": true
+ },
+ "next": {
+ "optional": true
+ },
+ "react": {
+ "optional": true
+ },
+ "svelte": {
+ "optional": true
+ },
+ "vue": {
+ "optional": true
+ },
+ "vue-router": {
+ "optional": true
+ }
+ }
+ },
"node_modules/@webgpu/types": {
"version": "0.1.69",
"resolved": "https://registry.npmjs.org/@webgpu/types/-/types-0.1.69.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 8c82699..d2f132a 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -1,49 +1,50 @@
{
- "name": "frontend",
- "version": "0.1.0",
- "private": true,
- "scripts": {
- "dev": "next dev",
- "build": "next build",
- "start": "next start",
- "lint": "eslint"
- },
- "dependencies": {
- "@supabase/ssr": "^0.8.0",
- "@supabase/supabase-js": "^2.95.2",
- "next-themes": "^0.4.6",
- "next": "16.1.6",
- "react": "19.2.3",
- "react-dom": "19.2.3",
- "clsx": "^2.1.1",
- "lucide-react": "^0.454.0",
- "tailwind-merge": "^3.3.1",
- "@radix-ui/react-tooltip": "1.1.6",
- "@react-three/postprocessing": "^3.0.4",
- "meshline": "^3.3.1",
- "motion": "^12.23.12",
- "three": "^0.167.1",
- "class-variance-authority": "^0.7.1",
- "@vercel/analytics": "1.3.1",
- "@react-three/rapier": "^2.2.0",
- "react-use-measure": "^2.1.7",
- "@react-three/fiber": "^9.5.0",
- "@radix-ui/react-slot": "1.1.1",
- "@react-three/drei": "^10.7.7",
- "postprocessing": "^6.38.2"
- },
- "devDependencies": {
- "@tailwindcss/postcss": "^4",
- "@types/node": "^20",
- "@types/react": "^19",
- "@types/react-dom": "^19",
- "autoprefixer": "^10.4.24",
- "eslint": "^9",
- "eslint-config-next": "16.1.6",
- "postcss": "^8.5.6",
- "tailwindcss": "^4.1.18",
- "typescript": "^5",
- "tw-animate-css": "1.3.3",
- "@types/three": "^0.182.0"
- }
+ "name": "frontend",
+ "version": "0.1.0",
+ "private": true,
+ "scripts": {
+ "dev": "next dev",
+ "build": "next build",
+ "start": "next start",
+ "lint": "eslint"
+ },
+ "dependencies": {
+ "@radix-ui/react-slot": "1.1.1",
+ "@radix-ui/react-tooltip": "1.1.6",
+ "@react-three/drei": "^10.7.7",
+ "@react-three/fiber": "^9.5.0",
+ "@react-three/postprocessing": "^3.0.4",
+ "@react-three/rapier": "^2.2.0",
+ "@supabase/ssr": "^0.8.0",
+ "@supabase/supabase-js": "^2.95.2",
+ "@vercel/analytics": "1.3.1",
+ "@vercel/speed-insights": "^1.3.1",
+ "class-variance-authority": "^0.7.1",
+ "clsx": "^2.1.1",
+ "lucide-react": "^0.454.0",
+ "meshline": "^3.3.1",
+ "motion": "^12.23.12",
+ "next": "16.1.6",
+ "next-themes": "^0.4.6",
+ "postprocessing": "^6.38.2",
+ "react": "19.2.3",
+ "react-dom": "19.2.3",
+ "react-use-measure": "^2.1.7",
+ "tailwind-merge": "^3.3.1",
+ "three": "^0.167.1"
+ },
+ "devDependencies": {
+ "@tailwindcss/postcss": "^4",
+ "@types/node": "^20",
+ "@types/react": "^19",
+ "@types/react-dom": "^19",
+ "@types/three": "^0.182.0",
+ "autoprefixer": "^10.4.24",
+ "eslint": "^9",
+ "eslint-config-next": "16.1.6",
+ "postcss": "^8.5.6",
+ "tailwindcss": "^4.1.18",
+ "tw-animate-css": "1.3.3",
+ "typescript": "^5"
+ }
}