summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorYuval Adam <_@yuv.al>2025-05-23 17:15:05 +0200
committerYuval Adam <_@yuv.al>2025-05-23 17:15:20 +0200
commita4b1886b210213b0becf1a134d06882db631f647 (patch)
treed20cc2b0f1b8498d14f5c69f54c619f47b215fd0 /src
parentf32aa30f2f0722fb659a22ddc57cdf3bd79a4ab5 (diff)
Add analytics
Diffstat (limited to 'src')
-rw-r--r--src/components/Analytics.astro33
-rw-r--r--src/config/analytics.js7
-rw-r--r--src/layouts/CenteredLayout.astro4
-rw-r--r--src/layouts/StandardLayout.astro15
4 files changed, 52 insertions, 7 deletions
diff --git a/src/components/Analytics.astro b/src/components/Analytics.astro
new file mode 100644
index 0000000..0352bea
--- /dev/null
+++ b/src/components/Analytics.astro
@@ -0,0 +1,33 @@
+---
+import { analytics } from "../config/analytics";
+
+const GOOGLE_ANALYTICS_ID = analytics.googleAnalyticsId;
+const FATHOM_ANALYTICS_ID = analytics.fathomAnalyticsId;
+---
+
+{
+ GOOGLE_ANALYTICS_ID && (
+ <script
+ async
+ src={`https://www.googletagmanager.com/gtag/js?id=${GOOGLE_ANALYTICS_ID}`}
+ />
+ <script define:vars={{ GOOGLE_ANALYTICS_ID }} is:inline>
+ window.dataLayer = window.dataLayer || [];
+ function gtag() {
+ dataLayer.push(arguments);
+ }
+ gtag("js", new Date());
+ gtag("config", GOOGLE_ANALYTICS_ID);
+ </script>
+ )
+}
+{
+ FATHOM_ANALYTICS_ID && (
+ <script
+ src="https://cdn.usefathom.com/script.js"
+ data-site={FATHOM_ANALYTICS_ID}
+ defer
+ />
+ )
+}
+
diff --git a/src/config/analytics.js b/src/config/analytics.js
new file mode 100644
index 0000000..e17350d
--- /dev/null
+++ b/src/config/analytics.js
@@ -0,0 +1,7 @@
+
+export const analytics = {
+ googleAnalyticsId: '',
+ fathomAnalyticsId: ''
+};
+
+export default analytics;
diff --git a/src/layouts/CenteredLayout.astro b/src/layouts/CenteredLayout.astro
index 5505b65..1b9286c 100644
--- a/src/layouts/CenteredLayout.astro
+++ b/src/layouts/CenteredLayout.astro
@@ -1,5 +1,6 @@
---
-import '../styles/global.css';
+import "../styles/global.css";
+import Analytics from "../components/Analytics.astro";
interface Props {
title?: string;
@@ -15,6 +16,7 @@ const { title = "Astro Site" } = Astro.props;
<meta name="viewport" content="width=device-width" />
<meta name="generator" content={Astro.generator} />
<title>{title}</title>
+ <Analytics />
</head>
<body class="min-h-screen bg-white">
<main class="flex min-h-screen flex-col items-center justify-center p-4">
diff --git a/src/layouts/StandardLayout.astro b/src/layouts/StandardLayout.astro
index a6c9151..e6a4bec 100644
--- a/src/layouts/StandardLayout.astro
+++ b/src/layouts/StandardLayout.astro
@@ -1,15 +1,17 @@
---
-import '../styles/global.css';
+import "../styles/global.css";
interface Props {
title?: string;
description?: string;
}
-const {
- title = "Astro Site",
- description = "A simple Astro site with blog functionality"
+const {
+ title = "Astro Site",
+ description = "A simple Astro site with blog functionality",
} = Astro.props;
+
+import Analytics from "../components/Analytics.astro";
---
<html lang="en">
@@ -20,6 +22,7 @@ const {
<meta name="generator" content={Astro.generator} />
<meta name="description" content={description} />
<title>{title}</title>
+ <Analytics />
</head>
<body class="min-h-screen bg-gray-50 flex flex-col">
<header class="bg-white shadow-sm">
@@ -33,13 +36,13 @@ const {
</nav>
</div>
</header>
-
+
<main class="flex-grow">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-8">
<slot />
</div>
</main>
-
+
<footer class="bg-white border-t border-gray-200">
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-6">
<p class="text-center text-gray-500 text-sm">