Files
lage-chat-control/README.md
T
Aurealibe f4e09ca886
CI / ci (push) Failing after 6m53s
Add educational censorship-resistance quiz as a native Astro page
Reworks the standalone-HTML quiz from PR #7 into the site's real
architecture so it actually ships and respects every project rule.

- /quiz, /fr/quiz, /nl/quiz — prerendered per-locale routes with correct
  canonical + hreflang (new optional `path` prop on Base.astro).
- Progressive enhancement: the twelve questions and the full scoring key
  (bands + per-area guidance with deep links into the guide) are
  server-rendered and readable with JavaScript disabled; the client script
  only computes the live score and reveals the result panel.
- CSP-clean: bundled same-origin script (no inline handlers), bar widths
  set via a CSS custom property through the CSSOM (no inline styles), no
  third-party request. docker/csp.conf needs no new hash.
- i18n via the existing core+overlay model: src/data/quiz.json (neutral
  scoring) + src/i18n/content/<locale>/quiz.json (prose), loaded by a
  dedicated loadQuiz() that checks question/option/band parity in all three
  locales. Page chrome added to the `quiz` namespace (key parity tested).
- Share is copy-link + native Web Share + X (already allowlisted); the
  third-party mastodonshare.com redirector from PR #7 is dropped.
- TopBar "Contents" link made absolute (/#toc) so it works off the guide,
  plus a new "Quiz" nav link. New tests/e2e/quiz.spec.ts covers no-JS
  readability, scoring, the TOC link and zero third-party requests.

Co-Authored-By: arnaudom <1535627+arnaudom@users.noreply.github.com>
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-10 13:24:41 +01:00

3.0 KiB
Raw Blame History

Exit Chat Control

A free, multilingual field guide to escape Chat Control and take back control of your digital privacy: encrypted messaging, email, VPN, DNS, 2FA, Linux, GrapheneOS, self-hosting, and more. Every tool is presented with what it does, who it's for, and how to install it.

🔗 Live site: https://exitchatcontrol.org

What is this?

In July 2026, the European Parliament let the "Chat Control" machinery advance — the amended text now sits with the Council, and the permanent version (CSAR, "Chat Control 2.0") is still being negotiated. This project is a practical, no-nonsense answer: a guide referencing privacy-respecting tools anyone can use to opt out of mass surveillance, from the everyday citizen to the whistleblower.

Its promises, all enforced by tests:

  • Static and self-contained — no tracker, no cookie, not a single request to a third-party domain.
  • Readable with JavaScript disabled (Tor Browser "safest" mode included) — scripts only power the theme, filters, checklist and quiz.
  • Multilingual by design — every language is a real prerendered route with correct hreflang; adding one means adding translation files, not touching code.
  • Educational quiz/quiz scores your censorship resistance on a 0100 scale and points you at concrete fixes in the guide. Server-rendered questions and scoring key (readable with JS off); the score itself is computed locally in the browser, nothing sent or stored.
  • Printable and mirrorable — a single-file offline version ships with every build.

Stack

Astro (static output, built-in i18n routing) · Tailwind CSS v4 (design tokens, light-dark() theming) · TypeScript strict · Vitest (content integrity, i18n parity, domain allowlist) · Playwright + axe (no-JS readability, zero-third-party-request guarantee, WCAG AA) · Docker (multi-stage build → nginx). Package manager: pnpm.

pnpm install
pnpm dev                # develop on http://localhost:4321
pnpm build              # static site + offline artifact in dist/
docker compose -f docker-compose.dev.yml up preview   # prod-like: nginx + security headers on :8080

Production deploys docker-compose.yml (single nginx service behind the platform's reverse proxy — Coolify, etc.), or point any static host at pnpm builddist/.

Contributing

Contributions are very welcome — a tool to add, a translation, a correction. Read CONTRIBUTING.md first: it contains three simple rules for tools (traction, open source, privacy-respecting), a mandatory affiliation-disclosure policy, and a CI-enforced external-link policy. Large changes start with an issue, not a PR.

Not comfortable with code? Open an issue with the app's name, its link, and why it qualifies, and it will be added for you.

License

See LICENSE.


Privacy is a right, not a confession. To encrypt is to vote. To self-host is to disobey. To reclaim your tools is to become ungovernable.