From ac9b8dc33065d97aa8483506bfe83149c6bca45e Mon Sep 17 00:00:00 2001 From: Michilis Date: Sun, 15 Mar 2026 22:07:39 +0000 Subject: [PATCH] Add Plausible analytics support with configurable domain and script URL Made-with: Cursor --- frontend/.env.example | 4 ++++ frontend/src/main.tsx | 11 +++++++++++ frontend/src/vite-env.d.ts | 2 ++ 3 files changed, 17 insertions(+) diff --git a/frontend/.env.example b/frontend/.env.example index 8cea093..80146bd 100644 --- a/frontend/.env.example +++ b/frontend/.env.example @@ -4,3 +4,7 @@ VITE_API_URL=http://localhost:3001 # Nostr relays for fetching user profile metadata (comma-separated) VITE_NOSTR_RELAYS=wss://relay.damus.io,wss://relay.nostr.band,wss://nos.lol + +# Plausible analytics (optional; leave empty to disable) +VITE_PLAUSIBLE_DOMAIN=faucet.lnpulse.app +VITE_PLAUSIBLE_SCRIPT_URL=https://analytics.azzamo.net/js/script.js diff --git a/frontend/src/main.tsx b/frontend/src/main.tsx index 6d3a054..eac9012 100644 --- a/frontend/src/main.tsx +++ b/frontend/src/main.tsx @@ -5,6 +5,17 @@ import { ErrorBoundary } from "./ErrorBoundary"; import { ToastProvider } from "./contexts/ToastContext"; import "./styles/global.css"; +// Plausible analytics (injected in head when env vars are set) +const plausibleDomain = import.meta.env.VITE_PLAUSIBLE_DOMAIN as string | undefined; +const plausibleScriptUrl = import.meta.env.VITE_PLAUSIBLE_SCRIPT_URL as string | undefined; +if (plausibleDomain && plausibleScriptUrl) { + const script = document.createElement("script"); + script.defer = true; + script.dataset.domain = plausibleDomain; + script.src = plausibleScriptUrl; + document.head.appendChild(script); +} + const rootEl = document.getElementById("root"); if (!rootEl) { document.body.innerHTML = "

Root element #root not found.

"; diff --git a/frontend/src/vite-env.d.ts b/frontend/src/vite-env.d.ts index 29c29a1..58adcc5 100644 --- a/frontend/src/vite-env.d.ts +++ b/frontend/src/vite-env.d.ts @@ -2,6 +2,8 @@ interface ImportMetaEnv { readonly VITE_API_URL: string; + readonly VITE_PLAUSIBLE_DOMAIN: string; + readonly VITE_PLAUSIBLE_SCRIPT_URL: string; } interface ImportMeta {