From f2b4ed00f4f6528311725b1ade851d1334d296f5 Mon Sep 17 00:00:00 2001 From: "claude@clouddev1" Date: Mon, 22 Jun 2026 13:27:10 +0000 Subject: [PATCH] docs(website): add cookieless Umami analytics + a privacy page Wire self-hosted Umami (umami.oliversturm.com) into the site head: - data-domains=relplay.org so the preview/staging deploys don't pollute the production stats - data-do-not-track so DNT visitors aren't counted - the Website ID is public by design (ships in every page) Add a short /privacy page (footer-linked, kept out of the sidebar) explaining the no-cookies / no-personal-data / no-cross-site-tracking posture and the DNT behaviour. No cookie banner is needed: the tracker stores nothing on the device, and first-party statistical analytics is exempt from PECR consent under the Data (Use and Access) Act 2025. --- website/astro.config.mjs | 19 +++++++++++ website/src/components/Footer.astro | 2 ++ website/src/content/docs/privacy.md | 51 +++++++++++++++++++++++++++++ 3 files changed, 72 insertions(+) create mode 100644 website/src/content/docs/privacy.md diff --git a/website/astro.config.mjs b/website/astro.config.mjs index 44f4e22..05a9700 100644 --- a/website/astro.config.mjs +++ b/website/astro.config.mjs @@ -58,6 +58,25 @@ export default defineConfig({ }, { tag: 'meta', attrs: { name: 'twitter:card', content: 'summary_large_image' } }, { tag: 'meta', attrs: { name: 'twitter:image', content: 'https://relplay.org/og-card.png' } }, + // Privacy-friendly, cookieless analytics (self-hosted Umami). The + // Website ID is public by design (it ships in every page). The script + // loads from the Umami host, which also becomes the data destination, + // so no `data-host-url` is needed. + // - data-domains: only run on the production apex, so the + // `website.relplay.pages.dev` preview and `staging.relplay.org` + // don't pollute the stats. + // - data-do-not-track: honour the browser's Do-Not-Track signal + // (those visits are not counted at all). See /privacy. + { + tag: 'script', + attrs: { + defer: true, + src: 'https://umami.oliversturm.com/script.js', + 'data-website-id': 'fd77cfa5-cffe-4fc8-addb-1c6d7b6d9939', + 'data-domains': 'relplay.org', + 'data-do-not-track': true, + }, + }, ], // Register the simple-mode command grammar with Expressive Code (Shiki). expressiveCode: { shiki: { langs: [rdbmsLang, rdbmsSyntax] } }, diff --git a/website/src/components/Footer.astro b/website/src/components/Footer.astro index 526d5a3..b708d13 100644 --- a/website/src/components/Footer.astro +++ b/website/src/components/Footer.astro @@ -15,6 +15,8 @@ import Default from '@astrojs/starlight/components/Footer.astro'; Made by Lazy Evaluation Ltd · Source & issues + · + Privacy

diff --git a/website/src/content/docs/privacy.md b/website/src/content/docs/privacy.md new file mode 100644 index 0000000..7fb5b27 --- /dev/null +++ b/website/src/content/docs/privacy.md @@ -0,0 +1,51 @@ +--- +title: Privacy +description: What we measure on this site, and what we don't. No cookies, no personal data. +tableOfContents: false +--- + +This site is run as a free teaching tool, not a business that profiles its +visitors. We keep the analytics deliberately minimal. + +## What we collect + +We measure aggregate usage with **[Umami](https://umami.is/)**, a +privacy-friendly analytics tool that we **host ourselves** (on +`umami.oliversturm.com`). Nothing is sent to a third-party advertising +network. + +For each page view we record: + +- the page you viewed and the site you arrived from (the referrer), +- your browser, operating system, and device type, +- an approximate **country**. + +That's it. The numbers are aggregated into counts — how many people read a +page, which pages are popular — and are never combined into a profile of an +individual. + +## What we don't do + +- **No cookies, and nothing stored on your device.** The tracker sets no + cookies and writes nothing to local storage. You can confirm this in your + browser's developer tools — there are no entries to clear. +- **No personal data.** Your IP address is used for a moment on our own + server to derive the approximate country and to tell repeated page-loads + apart within a single day; it is **not stored**. +- **No cross-site tracking.** We cannot and do not follow you to other sites, + and we never sell or share what we measure. + +## Your choices + +If your browser sends a **Do Not Track** signal, we honour it: those visits +are not counted at all. + +Because the analytics use no cookies and store nothing on your device, there +is no cookie banner to dismiss — there is simply nothing to consent to. + +## Questions + +This site and its analytics are operated by +[Lazy Evaluation Ltd](https://www.lazyevaluation.biz/). If you have any +questions about what we measure, get in touch through the contact details +there.