From be322cb0d8aa3c90ae0a099a8edd287b7976c167 Mon Sep 17 00:00:00 2001 From: michilis Date: Fri, 21 Aug 2026 06:11:04 +0200 Subject: [PATCH] Add configurable Plausible analytics Co-authored-by: Cursor --- .env.example | 5 +++++ README.md | 18 ++++++++++-------- web/astro.config.mjs | 8 ++++++++ web/src/layouts/Base.astro | 6 ++++++ 4 files changed, 29 insertions(+), 8 deletions(-) diff --git a/.env.example b/.env.example index 0d48460..57ca74c 100644 --- a/.env.example +++ b/.env.example @@ -38,6 +38,11 @@ PUBLIC_API_URL= # Canonical origin for canonical links, OpenGraph tags and the sitemap. SITE_URL=https://cashumints.space +# Plausible-compatible analytics script and the domain reported with each page view. +# Leave either value empty to disable analytics. +PLAUSIBLE_URL=https://analytics.azzamo.net/js/script.js +PLAUSIBLE_DOMAIN=cashumints.space + # Whether a rated mint's JSON-LD also carries the review-snippet-eligible Product # type next to Service (web/src/lib/schema.ts explains the trade). On by default; # set to 0 to ship the plain Service node on the next build, no code change needed. diff --git a/README.md b/README.md index 8549399..f46ad90 100644 --- a/README.md +++ b/README.md @@ -540,14 +540,16 @@ so a systemd `Environment=` line or a one-off `PORT=9000 pnpm dev:api` still ove ### Web (`web/`) -| Variable | Default | Meaning | -| ---------------- | -------------------------- | --------------------------------------------- | -| `WEB_PORT` | `4321` | Dev server and preview port | -| `API_URL` | `http://127.0.0.1:8787` | API origin used at build time | -| `PUBLIC_API_URL` | empty (same origin) | API origin baked into markup and islands | -| `SITE_URL` | `https://cashumints.space` | Canonical origin for meta tags | -| `RELAYS` | see `shared/src/nostr.ts` | Relays for the build-time review fetch | -| `BONES_URL` | `http://localhost:$WEB_PORT` | Dev server `pnpm bones` captures against | +| Variable | Default | Meaning | +| ------------------ | ------------------------------------------------- | --------------------------------------------- | +| `WEB_PORT` | `4321` | Dev server and preview port | +| `API_URL` | `http://127.0.0.1:8787` | API origin used at build time | +| `PUBLIC_API_URL` | empty (same origin) | API origin baked into markup and islands | +| `SITE_URL` | `https://cashumints.space` | Canonical origin for meta tags | +| `PLAUSIBLE_URL` | `https://analytics.azzamo.net/js/script.js` | Analytics script URL; empty disables analytics | +| `PLAUSIBLE_DOMAIN` | `cashumints.space` | Domain reported to analytics; empty disables analytics | +| `RELAYS` | see `shared/src/nostr.ts` | Relays for the build-time review fetch | +| `BONES_URL` | `http://localhost:$WEB_PORT` | Dev server `pnpm bones` captures against | `PORT` and `API_URL` have to agree: the build and the dev proxy reach the API at `API_URL`, so moving the API off `8787` means changing both. diff --git a/web/astro.config.mjs b/web/astro.config.mjs index cb1d2b7..227f81c 100644 --- a/web/astro.config.mjs +++ b/web/astro.config.mjs @@ -28,6 +28,12 @@ const apiUrl = process.env.API_URL ?? 'http://127.0.0.1:8787'; // https://api.cashumints.space. const publicApiUrl = process.env.PUBLIC_API_URL ?? ''; +// Plausible-compatible analytics endpoint and site identifier. Empty values disable the +// script, which is useful for local builds that should not report page views. +const plausibleUrl = + process.env.PLAUSIBLE_URL ?? 'https://analytics.azzamo.net/js/script.js'; +const plausibleDomain = process.env.PLAUSIBLE_DOMAIN ?? 'cashumints.space'; + // Dev server and preview port. Set WEB_PORT in .env; a --port flag still overrides it. const port = Number.parseInt(process.env.WEB_PORT ?? '', 10) || 4321; @@ -73,6 +79,8 @@ export default defineConfig({ vite: { define: { 'import.meta.env.PUBLIC_API_URL': JSON.stringify(publicApiUrl), + 'import.meta.env.PLAUSIBLE_URL': JSON.stringify(plausibleUrl), + 'import.meta.env.PLAUSIBLE_DOMAIN': JSON.stringify(plausibleDomain), }, server: { proxy }, }, diff --git a/web/src/layouts/Base.astro b/web/src/layouts/Base.astro index d13d59d..fb9b9bd 100644 --- a/web/src/layouts/Base.astro +++ b/web/src/layouts/Base.astro @@ -130,6 +130,9 @@ const i18nPayload = JSON.stringify({ locale, catalog: clientCatalog(locale) }).r */ const imageUrl = new URL(image, site).href; +const plausibleUrl = import.meta.env.PLAUSIBLE_URL; +const plausibleDomain = import.meta.env.PLAUSIBLE_DOMAIN; + /** * This page's JSON-LD, assembled here and nowhere else. * @@ -267,6 +270,9 @@ const noscriptMotion = {graph.length > 0 && ( + )} {/* -- 2.54.0