From 807a77992edb6853889a50fa7dc786ff00cc9a40 Mon Sep 17 00:00:00 2001 From: AmirReza Jamali Date: Sat, 22 Nov 2025 10:56:40 +0330 Subject: [PATCH] feat(analytics): Add Firebase Analytics integration with page tracking - Initialize Firebase Analytics with configuration and client-side setup - Create GoogleAnalytics component to track page views on route changes - Add analytics utility functions for tracking custom events (button clicks, form submissions, link clicks, searches) - Integrate GoogleAnalytics component into home, not-found, and marketing layouts with Suspense boundary - Add firebase dependency to package.json - Enable automatic page view tracking with pathname and search parameters --- app/(home)/layout.tsx | 5 + app/(not-found)/[...not-found]/layout.tsx | 6 + app/_components/GoogleAnalytics.tsx | 26 + app/marketing/layout.tsx | 6 + lib/analytics.ts | 40 + lib/firebase.ts | 25 + package-lock.json | 1028 ++++++++++++++++++++- package.json | 1 + 8 files changed, 1135 insertions(+), 2 deletions(-) create mode 100644 app/_components/GoogleAnalytics.tsx create mode 100644 lib/analytics.ts create mode 100644 lib/firebase.ts diff --git a/app/(home)/layout.tsx b/app/(home)/layout.tsx index 4bcc088..7a4bb3e 100644 --- a/app/(home)/layout.tsx +++ b/app/(home)/layout.tsx @@ -5,6 +5,7 @@ import Image from "next/image"; import Link from "next/link"; import { Suspense } from "react"; import { ToastContainer, Zoom } from "react-toastify"; +import GoogleAnalytics from "../_components/GoogleAnalytics"; import NavigationBar from "../_components/NavigationBar"; import "../globals.css"; const geistSans = Geist({ @@ -136,6 +137,10 @@ export default async function RootLayout({ pauseOnHover /> + + + +
{children}