Marketing site for privacytracker — the app that watches iOS App Store privacy labels and tells you when one quietly changes.
Static HTML. No framework, no build step. Deploy by pointing any static host at the repository root.
Production is a Cloudflare Worker serving the repository root as static
assets (wrangler.jsonc). Cloudflare Workers Builds is
connected to this repository and deploys every push to main with
npx wrangler deploy; just deploy does the same by hand.
Hostname: privacytracker.privacykey.org (DNS not configured yet)
.
├── index.html Hero, features, the five-minute setup walkthrough, install paths
├── about.html What privacykey is
├── privacy.html Data posture — what's collected (nothing), every outbound
│ endpoint, the opt-in surfaces, how to go fully offline
├── legal.html Apache-2.0 plus bundled third-party libraries by SPDX licence
├── robots.txt Search engines welcome; training crawlers blocked
├── security.txt RFC 9116, mirrored under /.well-known/
├── sitemap.xml
├── site.webmanifest
├── assets/ CSS, fonts, icons, social images
└── scripts/
├── update-versions.py Syncs the dependency version pills in legal.html
└── pin-page-revisions.py Stamps each page's latest commit hash + date into privacy.html and legal.html
Three automations guard the pages that make factual claims:
.github/workflows/check-privacy-drift.ymlwatches privacytracker's own privacy-policy source. When it changes, the workflow opens an issue soprivacy.htmlgets reviewed rather than silently drifting. Baseline hashes live in.github/upstream-hashes/..github/workflows/bump-oss-versions.ymlkeeps the third-party version pills inlegal.htmlcurrent, viascripts/update-versions.py..github/workflows/pin-page-revisions.ymlwrites the hash and date of the latest commit that changedprivacy.html/legal.htmlinto the page itself (the "Revision …" line), viascripts/pin-page-revisions.py. It runs on every push tomainthat touches a page and after the other two bots commit, and it skips its own commits so it never loops.
If you change privacy.html in response to an upstream change, record the new
baseline hash in the same commit.
- privacytracker and privacykey are one word, all lowercase, everywhere — including at the start of a sentence.
- Feature claims must match the shipped product. When in doubt, check privacytracker's README or the docs site rather than the last version of this page.
- privacytracker — the app
- docs-privacytracker — the documentation site
- website-privacykey — the organisation site