diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index db4f4bc..5448c58 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -7,5 +7,5 @@ contact_links: url: https://github.com/Apolloccrypt/nl-data-optout/blob/main/README.md about: Check the README for usage instructions and FAQ. - name: π LinkedIn Contact - url: https://linkedin.com/in/mick-beer + url: https://www.linkedin.com/in/mick-beer/ about: For complex questions or media inquiries, contact Mick Beer directly. diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..600a98c --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,8 @@ +version: 2 +updates: + - package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" + commit-message: + prefix: "chore" diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml new file mode 100644 index 0000000..372eeda --- /dev/null +++ b/.github/workflows/hugo.yml @@ -0,0 +1,51 @@ +name: Deploy Hugo to GitHub Pages + # re-register workflow + +on: + push: + branches: [main] + workflow_dispatch: + +permissions: + contents: read + pages: write + id-token: write + +concurrency: + group: pages + cancel-in-progress: false + +jobs: + build: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 + with: + submodules: recursive + fetch-depth: 0 + + - name: Setup Hugo + uses: peaceiris/actions-hugo@75d2e84710de30f6ff7268e08f310b60ef14033f # v3.0.0 + with: + hugo-version: latest + extended: false + + - name: Build + run: hugo --minify --baseURL "https://${GITHUB_REPOSITORY_OWNER}.github.io/${GITHUB_REPOSITORY#*/}/" + + - name: Upload Pages artifact + uses: actions/upload-pages-artifact@fc324d3547104276b827a68afc52ff2a11cc49c9 # v5.0.0 + with: + path: ./public + + deploy: + needs: build + runs-on: ubuntu-latest + environment: + name: github-pages + url: ${{ steps.deploy.outputs.page_url }} + steps: + - name: Deploy to GitHub Pages + id: deploy + uses: actions/deploy-pages@cd2ce8fcbc39b97be8ca5fce6e763baed58fa128 # v5.0.0 diff --git a/.gitignore b/.gitignore index d3046e7..15fff20 100644 --- a/.gitignore +++ b/.gitignore @@ -36,3 +36,9 @@ package-lock.json # Personal notes notes.md TODO.md + +# Hugo build output +/public/ +/resources/ +.hugo_build.lock +/.claude diff --git a/CHANGELOG.md b/CHANGELOG.md index d9b1a82..75976a6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,115 +1,88 @@ # Changelog -All notable changes to this project will be documented in this file. +Alle noemenswaardige wijzigingen aan dit project worden in dit bestand bijgehouden. -The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), -and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +Het formaat is gebaseerd op [Keep a Changelog](https://keepachangelog.com/nl/1.1.0/), +dit project hanteert [Semantic Versioning](https://semver.org/lang/nl/), +en commit-berichten volgen grotendeels de stijl van [Conventional Commits](https://www.conventionalcommits.org/nl/v1.0.0/). --- -## [1.1.0] - 2026-03-21 - -### Added -- **Meta/Facebook formulier fix** β detecteert dat Meta geen email meer accepteert, geeft formulier instructies -- **Notes systeem** β waarschuwingsbanner voor bedrijven met speciale instructies -- **60+ brokers** β uitgebreide lijst (was 25) -- **CategorieΓ«n teller** β toont aantal brokers per categorie in dropdown -- **Dark pattern waarschuwing** β bij formulier-vereiste bedrijven -- **Kopieer naar clipboard** knop β makkelijker copy-paste -- **Changelog link** in footer -- **Bug report link** in disclaimer -- **GitHub Issues templates** (broken contact, feature request) +## [2.0.2] - 2026-04-19 ### Changed -- **UI verbeteringen** β betere warnings, info boxes, button styling -- **Broker object structuur** β toegevoegd: `note`, `isForm`, `formUrl` fields -- **Email template** β duidelijkere formatting -- **Footer** β LinkedIn link, versie nummer, changelog link -- **Result box** β betere formatting, copy button, tips - -### Fixed -- **Meta contact** β `datarequests@support.facebook.com` vervangen door formulier -- **JavaScript escaping** β backticks en dollar signs in template copy -- **Mobile responsive** β betere display op kleine schermen - -### Documentation -- README.md volledig herschreven -- CONTRIBUTING.md toegevoegd -- Issue templates toegevoegd -- Changelog gestart +- dubbele GitHub Actions workflow verwijderd (`deploy.yml` conflicteerde met `hugo.yml`) +- alle Actions gepind op SHA-hash voor reproduceerbare en veilige builds +- Actions bijgewerkt naar nieuwste versies: `checkout` v6.0.2, `upload-pages-artifact` v5.0.0, `deploy-pages` v5.0.0 +- `baseURL` wordt nu dynamisch berekend via `GITHUB_REPOSITORY_OWNER` en `GITHUB_REPOSITORY`, zodat forks automatisch de juiste paden genereren +- `renovate.json` verwijderd (vereist extern mend.io account); Dependabot beheert voortaan dependency-updates +- Bootstrap bijgewerkt van 5.3.3 naar 5.3.8 +- Bootstrap Icons bijgewerkt van 1.11.3 naar 1.13.1 +- dubbele AppNexus (Xandr) entry verwijderd uit brokerlijst; de uitgebreide Xandr-entry was al correct en compleet --- -## [1.0.0] - 2026-03-20 +## [2.0.1] - 2026-04-10 -### Added -- **Eerste release** β 25 Nederlandse data brokers -- **GDPR Art. 21, 17, 15** β bezwaar, wissen, inzage -- **CategorieΓ«n** β Credit Bureaus, Ad-Tech, Media, Telecom, Retail -- **"Ander bedrijf" optie** β handmatige invoer -- **100% lokaal** β geen server, geen tracking -- **MIT License** β open source -- **GitHub Pages** β live hosting - -### Features -- Naam + email input -- Bedrijf selectie (dropdown met categorieΓ«n) -- Type verzoek (bezwaar / wissen / inzage / beide) -- Automatische mailto: link generatie -- Email template met GDPR artikelen -- Volledige disclaimer -- Mobile-friendly design +### Changed +- visuele stijl gelijkgetrokken met [mickbeer.com](https://mickbeer.com) +- contrast en kleurproblemen opgelost: donate-knop, dark mode kleurtokens, taalschakelaar separator +- footer ingekort: toont nu alleen versienummer en datum --- -## Toekomstige Updates +## [2.0.0] - 2026-04-10 -### Geplanned -- [ ] **English version** (international brokers) -- [ ] **CSV export** β track welke verzoeken je verstuurd hebt -- [ ] **Response tracker** β check of bedrijven binnen 1 maand reageren -- [ ] **EU brokers** β uitbreiding naar andere EU landen -- [ ] **API voor automatisering** β bulk verzoeken (optioneel) +### Changed +- volledige herbouw als Hugo statische site (van losse index.html naar Hugo-template systeem) +- meertalige ondersteuning: Nederlands (standaard) en Engels via Hugo i18n +- nieuwe visuele stijl geΓ―nspireerd op [mickbeer.com](https://mickbeer.com): crΓ¨me achtergrond, Playfair Display serif headings, amber accenten +- GitHub Pages URL: `https://apolloccrypt.github.io/nl-data-optout/` +- footer uitgebreid: changelog-link, versienummer, donatie-knop, LinkedIn en Medium links +- donatie-knop (Buy me a coffee) in footer van elke pagina +- GitHub Actions workflow bijgewerkt voor Hugo deploy op push naar `main` +- "Over dit project" sectie uitgebreid met toelichting over reikwijdte: NL-markt + buitenlandse partijen actief in Nederland +- alle UI-strings in script.js tweetalig (Nederlands/Engels) via `window.SITE_LANG` -### Community Requests -- [ ] Browser extension (optioneel) -- [ ] Template customization (eigen tekst) -- [ ] Multi-language support +### Fixed +- broker-teller toont correct "Nederlandse data brokers" --- -## Contact veranderingen +## [1.2.1] - 2026-04-06 -### Meta/Facebook (maart 2026) -- **Oud:** `datarequests@support.facebook.com` -- **Nieuw:** Contact formulier verplicht -- **URL:** https://www.facebook.com/help/contact/540977946302970 -- **Reden:** Dark pattern β email vervangen door formulier (meer friction) -- **Gemeld door:** Tobias L. (LinkedIn community) -- **Fix:** v1.1.0 - -### Rapporteer contact wijzigingen via GitHub Issues! +- Wayback Machine / Internet Archive toegevoegd als data broker +- NL/EN taalschakelaar bij e-mail generatieknop +- Broker-teller gecorrigeerd naar "Nederlandse data brokers" --- -## Versie Nummering - -We gebruiken [Semantic Versioning](https://semver.org/): +## [1.2.0] - 2026-03-31 -- **MAJOR** (1.x.x) β Breaking changes (bijv. volledige UI redesign) -- **MINOR** (x.1.x) β Nieuwe features (bijv. nieuwe brokers, nieuwe functionaliteit) -- **PATCH** (x.x.1) β Bug fixes, contact updates, kleine verbeteringen +- Code uitgesplitst in script.js en style.css +- Identifiers omgezet naar Engels (camelCase JS, kebab-case HTML/CSS) +- Microsoft ([#1](https://github.com/Apolloccrypt/nl-data-optout/issues/1)), Pinterest ([#2](https://github.com/Apolloccrypt/nl-data-optout/issues/2)), DPG Media ([#3](https://github.com/Apolloccrypt/nl-data-optout/issues/3)) omgezet naar formulier; Bol.com ([#4](https://github.com/Apolloccrypt/nl-data-optout/issues/4)) login-only +- Documentatie (README, CONTRIBUTING, DEPLOYMENT, CHANGELOG) ingekort --- -## Contributors +## [1.1.1] - 2026-03-22 + +- Xandr en SmartOcto contactadressen gecorrigeerd (bouncende e-mails) +- Xandr: 0% GDPR response rate toegevoegd (noyb 2024) +- Parse-fouten in brokers array opgelost + +--- -- **Mick Beer** (@Apolloccrypt) β Creator, maintainer -- **Tobias L.** β Meta contact update report -- **Community** β Bug reports, feature requests +## [1.1.0] - 2026-03-21 -Wil je bijdragen? Zie [CONTRIBUTING.md](CONTRIBUTING.md)! +- 60+ brokers (was 25), verdeeld in categorieen met teller +- Formulierdetectie met waarschuwingsbanner en dark pattern notitie +- Kopieer-naar-klembord knop +- Meta omgezet naar formulier --- -
Last update: 21 maart 2026
+## [1.0.0] - 2026-03-20 + +- Eerste release: 25 NL data brokers, Art. 15/17/21, lokaal, MIT diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index b82f6fd..f5f9c75 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,169 +1,25 @@ -# Contributing to NL Data Brokers Opt-Out Tool +# Contributing -Thanks for your interest in improving this tool! π +## Verouderd contactadres melden -We welcome contributions from the community. Here's how you can help: +Open een [issue](https://github.com/Apolloccrypt/nl-data-optout/issues/new?template=broken-contact.md) +met de bedrijfsnaam, het oude adres en het nieuwe adres of formulier. ---- +## Broker toevoegen -## π Reporting Bugs +Via een issue of pull request. Zie DEPLOYMENT.md voor de technische details. -### Contact Email Changed? -If a broker's privacy email no longer works: +Een broker wordt toegevoegd als het bedrijf in Nederland actief is, persoonsgegevens +verwerkt van Nederlandse burgers, en een publiek privacycontact heeft. -1. [Open an Issue](https://github.com/Apolloccrypt/nl-data-optout/issues/new?template=broken-contact.md) -2. Include: - - Broker name - - Old email (if known) - - New email or contact method - - How you discovered this (bounce, company website, etc.) +## Code bijdragen -**We aim to fix contact changes within 24-48 hours.** +De site gebruikt [Hugo](https://gohugo.io/). Fork de repo, installeer Hugo en run +`hugo server` om lokaal te testen. Open een pull request en voeg een regel toe aan CHANGELOG.md. ---- +Geen server-side code, geen tracking. -## β¨ Adding New Brokers +## Vragen -Want to add a data broker to the list? - -### Requirements: -- Dutch company OR active in Netherlands -- Processes personal data of Dutch citizens -- Has public privacy contact (email or form) - -### How to add: - -**Option 1: Issue (easiest)** -1. [Open a Feature Request](https://github.com/Apolloccrypt/nl-data-optout/issues/new?template=feature-request.md) -2. Include: - - Company name - - Privacy email (usually `privacy@company.nl`) - - Category (Credit Bureau / Ad-Tech / Telecom / Retail / Media / Analytics / Marketing) - - Optional: Why it's relevant (e.g., "Used by 5+ Dutch news sites") - -**Option 2: Pull Request (advanced)** -1. Fork this repo -2. Edit `index.html` (around line 119) -3. Add broker to `brokers` array: - ```javascript - { - name: "Company Name", - email: "privacy@company.nl", - category: "Ad-Tech & Tracking", - note: "Optional note (e.g., 'Used by XYZ site')" - }, - ``` -4. Test locally (open `index.html` in browser) -5. Update `CHANGELOG.md` -6. Submit PR - ---- - -## π§ Code Contributions - -### Tech Stack: -- HTML5 (structure) -- Vanilla JavaScript (no frameworks!) -- CSS3 (styling) - -**No build step required** β just edit and open in browser. - -### Code Style: -- Use existing formatting -- Add comments for complex logic -- Keep JavaScript simple (accessible to non-devs) -- No external dependencies (keep it 100% local) - -### Pull Request Process: -1. Fork repo -2. Create feature branch (`git checkout -b feature/new-broker`) -3. Make changes -4. Test locally (open `index.html` in multiple browsers) -5. Update `CHANGELOG.md` (add to `[Unreleased]` section) -6. Commit with clear message (`Add broker: CompanyName`) -7. Push to fork -8. Open Pull Request - -**We review PRs within 1-3 days.** - ---- - -## π Documentation - -Help improve docs: -- Fix typos in README -- Clarify usage instructions -- Add examples -- Translate (future: English version) - ---- - -## π Internationalization - -**Future goal:** Support EU-wide brokers. - -Interested in creating an English version or adding international brokers? -Open a Discussion or Issue to coordinate! - ---- - -## π« What We Don't Accept - -- External dependencies (jQuery, React, npm packages) -- Server-side code (keep it 100% client-side) -- Tracking/analytics scripts -- Non-privacy-related brokers -- Malicious code or spam - ---- - -## π¬ Community - -- **GitHub Issues:** Bug reports, feature requests -- **GitHub Discussions:** General questions, ideas -- **LinkedIn:** [@mickbeer](https://linkedin.com/in/mick-beer) β DM for complex questions - ---- - -## π Recognition - -Contributors are credited in: -- `CHANGELOG.md` -- README (if significant contribution) - ---- - -## βοΈ Legal - -By contributing, you agree: -- Your contributions are your own work -- You grant this project rights to use your contribution under MIT License -- No guarantee of merge (we review all PRs) - ---- - -## π― Priority Issues - -Looking for where to help? Check these: - -**High Priority:** --  labels -- Contact changes (broken emails) -- Security issues - -**Good First Issues:** --  labels -- Adding new brokers -- Documentation improvements - ---- - -## π Questions? - -Not sure how to contribute? Open an Issue or DM [@mickbeer](https://linkedin.com/in/mick-beer) on LinkedIn. - -**We're friendly and help new contributors!** π - ---- - -Thanks for helping make tracking more transparent! π‘οΈ
+- https://github.com/Apolloccrypt/nl-data-optout/issues +- https://www.linkedin.com/in/mick-beer/ diff --git a/DEPLOYMENT.md b/DEPLOYMENT.md index 9bbcff1..276f79a 100644 --- a/DEPLOYMENT.md +++ b/DEPLOYMENT.md @@ -1,237 +1,64 @@ -# π Deployment & Update Guide +# Deployment -## Quick Reference +Live site: https://apolloccrypt.github.io/nl-data-optout/ -**Live site:** https://apolloccrypt.github.io/nl-data-optout/ -**Repository:** https://github.com/Apolloccrypt/nl-data-optout ---- +## Automatische deployment met Hugo & GitHub Actions -## π¦ File Structure +Deze site gebruikt [Hugo](https://gohugo.io/) als static site generator. Bij elke push naar `main` wordt de site automatisch gebouwd en gedeployed naar GitHub Pages via een [GitHub Actions workflow](.github/workflows/deploy.yml). -``` -nl-data-optout/ -βββ index.html # Main tool (all-in-one file) -βββ README.md # Documentation -βββ CHANGELOG.md # Version history -βββ CONTRIBUTING.md # Contribution guidelines -βββ LICENSE # MIT License -βββ .gitignore # Git ignore rules -βββ .github/ - βββ ISSUE_TEMPLATE/ - βββ config.yml # Issue template config - βββ broken-contact.md - βββ feature-request.md - βββ bug-report.md -``` - ---- - -## π How to Update - -### **Option 1: GitHub Web Interface (Easiest)** - -1. Go to https://github.com/Apolloccrypt/nl-data-optout -2. Click on `index.html` -3. Click "Edit" (pencil icon) -4. Make changes -5. Scroll down β "Commit changes" -6. Add commit message (e.g., "Add broker: CompanyName") -7. Commit directly to `main` branch -8. **Wait 1-2 minutes** β Changes live at https://apolloccrypt.github.io/nl-data-optout/ - ---- - -### **Option 2: Git Command Line** - -```bash -# Clone repo -git clone https://github.com/Apolloccrypt/nl-data-optout.git -cd nl-data-optout - -# Make changes (edit index.html) - -# Test locally -open index.html # macOS -xdg-open index.html # Linux -start index.html # Windows - -# Commit -git add . -git commit -m "Add broker: CompanyName" -git push origin main +**BaseURL:** De workflow forceert altijd de baseURL naar `https://apolloccrypt.github.io/nl-data-optout/`, zodat alle links en assets correct werken op de upstream site. -# Wait 1-2 minutes for GitHub Pages to rebuild -``` +**Output:** Alleen de inhoud van de map `public/` wordt gepubliceerd. De maintainer hoeft niets aan te passen aan zijn GitHub Pages-instellingen. ---- +**Testen:** +1. Bouw lokaal met: + ``` + hugo --minify --baseURL "https://apolloccrypt.github.io/nl-data-optout/" + ``` +2. Open `public/index.html` direct in je browser. -## βοΈ Common Updates +Na een push duurt het ongeveer een minuut voordat de wijziging live is. -### **Adding a Broker** +## Broker toevoegen -Edit `index.html` around line 119: +Voeg een entry toe aan de `brokers` array in script.js: ```javascript -const brokers = [ - // ... existing brokers ... - - { - name: "New Company", - email: "privacy@newcompany.nl", - category: "Ad-Tech & Tracking", - note: "Optional note about this broker" // Optional - }, -]; +{ name: "Bedrijfsnaam", email: "privacy@bedrijf.nl", category: "Ad-Tech & Tracking" } ``` -**Don't forget:** -1. Update `CHANGELOG.md` (add to `[Unreleased]` section) -2. Test locally (open index.html in browser) -3. Commit with clear message - ---- - -### **Fixing a Contact** - -Find the broker in `index.html` (around line 119-180): - -**Email changed:** -```javascript -// OLD -{ name: "Company", email: "old@company.nl", category: "Ad-Tech" } - -// NEW -{ name: "Company", email: "new@company.nl", category: "Ad-Tech" } -``` +Als een bedrijf alleen een formulier accepteert: -**Email replaced by form:** ```javascript -{ - name: "Company β οΈ", +{ + name: "Bedrijfsnaam", email: "FORM_REQUIRED", - formUrl: "https://company.com/contact-form", - category: "Ad-Tech", - note: "Email werkt niet meer sinds [datum]. Formulier vereist.", + formUrl: "https://bedrijf.nl/privacy-form", + category: "Ad-Tech & Tracking", + note: "Email werkt niet meer. Formulier vereist.", isForm: true } ``` ---- - -### **Updating Version** - -When releasing new version: - -1. **index.html** (line ~136): Update version comment - ```html -v1.2.0 β’ Laatste update: [datum]
- ``` - -2. **CHANGELOG.md**: Move `[Unreleased]` to new `[1.2.0] - YYYY-MM-DD` - -3. **README.md**: Update version badge and "Last update" footer - -4. Commit: `git commit -m "Release v1.2.0"` +## Versie bijwerken -5. Tag: `git tag v1.2.0 && git push --tags` +1. Versienummer en datum aanpassen in de footer van index.html +2. Entry toevoegen aan CHANGELOG.md +3. Committen en pushen ---- +## Testen -## π§ͺ Testing +Open index.html lokaal in de browser voor je pusht. Geen server nodig. -### **Before Pushing:** - -1. **Open `index.html` locally** in browser -2. **Test broker selection** (pick 3-5 brokers) -3. **Generate email** (check template looks correct) -4. **Test "Andere" option** (manual entry) -5. **Test form-required broker** (e.g., Meta) -6. **Check mobile** (resize browser window to 375px width) - -### **After Pushing:** - -1. Wait 1-2 minutes for GitHub Pages -2. Visit https://apolloccrypt.github.io/nl-data-optout/ -3. Hard refresh (Ctrl+F5 / Cmd+Shift+R) -4. Test 1-2 brokers to confirm changes live - ---- - -## π Monitoring - -### **GitHub Actions** - -GitHub Pages auto-builds from `main` branch. -Check build status: https://github.com/Apolloccrypt/nl-data-optout/actions - -### **Analytics** (None!) - -This tool has **NO analytics** β 100% privacy. -Monitor via: -- GitHub star count -- Issue activity -- LinkedIn post engagement - ---- - -## π Rollback - -If you pushed a bug: +## Rollback ```bash -# Revert last commit git revert HEAD git push origin main - -# Or reset to previous commit (DANGEROUS - only if just pushed) -git reset --hard HEAD~1 -git push --force origin main ``` -**Better:** Fix forward (commit a fix) rather than rollback. - ---- - -## π Security - -### **No Server = No Server-Side Security Issues** - -This is a **static site** β no backend, no database, no API. - -**Security concerns:** -- XSS: Minimal risk (no user-generated content rendered) -- Data leaks: Impossible (100% client-side) -- Dependencies: None (no npm packages) - -**If security issue found:** -1. Open Issue with `security` label -2. Or DM @mickbeer on LinkedIn -3. Fix ASAP + announce in CHANGELOG - ---- - -## π Need Help? - -- **GitHub Issues:** Bug reports, questions -- **LinkedIn:** [@mickbeer](https://linkedin.com/in/mick-beer) -- **Email:** Via LinkedIn (no public email to avoid spam) - ---- - -## β Pre-Launch Checklist - -Before announcing updates: - -- [ ] Tested locally (multiple browsers) -- [ ] Updated CHANGELOG.md -- [ ] Version number incremented (if appropriate) -- [ ] Pushed to GitHub -- [ ] Confirmed live site updated (1-2 min wait) -- [ ] Tested live site (hard refresh) -- [ ] Mobile test -- [ ] Announced on LinkedIn (if major update) - ---- +## Contact -Happy deploying! π
+https://github.com/Apolloccrypt/nl-data-optout/issues +https://www.linkedin.com/in/mick-beer/ diff --git a/README.md b/README.md index 1a173f4..946a9be 100644 --- a/README.md +++ b/README.md @@ -1,288 +1,66 @@ -# π‘οΈ NL Data Brokers Opt-Out Tool +# NL Data Brokers Opt-Out Tool -**Genereer GDPR-verzoeken (Art. 21, 17, 15) naar 50+ Nederlandse data brokers in 2 minuten.** +Tool voor het versturen van GDPR-verzoeken naar Nederlandse data brokers. -π **Live Tool:** https://apolloccrypt.github.io/nl-data-optout/ +**Live: [apolloccrypt.github.io/nl-data-optout](https://apolloccrypt.github.io/nl-data-optout/)** - - - +[](https://apolloccrypt.github.io/nl-data-optout/) ---- +## Gebruik -## π Inhoudsopgave +1. Vul naam en emailadres in +2. Selecteer een bedrijf +3. Kies het type verzoek (bezwaar, wissen, inzage, of beide) +4. Klik "Genereer e-mail" -- [Over dit project](#over-dit-project) -- [Features](#features) -- [Gebruik](#gebruik) -- [Ondersteunde Bedrijven](#ondersteunde-bedrijven) -- [Privacy & Veiligheid](#privacy--veiligheid) -- [Juridische Basis](#juridische-basis) -- [Bijdragen](#bijdragen) -- [Licentie](#licentie) -- [Contact](#contact) ---- +### Ontwikkelen en bouwen -## π― Over dit project +Deze site gebruikt [Hugo](https://gohugo.io/) als static site generator. Voor lokale ontwikkeling: -Deze tool helpt Nederlandse burgers hun **GDPR-rechten** uit te oefenen tegenover data brokers, ad-tech bedrijven, telecom providers en retailers. +1. Installeer Hugo (extended versie aanbevolen) +2. Clone deze repo +3. Start een lokale server met: + ``` + hugo server + ``` +4. Of bouw de site voor productie met: + ``` + hugo --minify --baseURL "https://apolloccrypt.github.io/nl-data-optout/" + ``` -**Achtergrond:** -In maart 2026 testte ik 5 Nederlandse nieuwssites op cookie compliance. Bevindingen: -- **NU.nl:** 121 trackers, maar **104 partners niet bij naam genoemd** -- **NOS.nl:** Pre-consent tracking (cookies **vΓ³Γ³r** banner) -- **Google:** Aanwezig op **100% van de geteste sites** +De output verschijnt in de map `public/`. Open `public/index.html` direct in je browser om te testen. -**Probleem:** Als je niet weet welke bedrijven je data hebben, kun je je rechten niet uitoefenen. +### Automatische deployment -**Oplossing:** Deze tool. +Bij elke push naar `main` wordt de site automatisch gebouwd en gedeployed naar GitHub Pages via een [GitHub Actions workflow](.github/workflows/deploy.yml). Hierbij wordt de baseURL altijd geforceerd naar de upstream URL (`https://apolloccrypt.github.io/nl-data-optout/`), zodat alle links en assets correct werken. -π **Volledig onderzoek:** https://medium.com/p/75744f8645c6 +**Let op:** Alleen de inhoud van `public/` wordt gepubliceerd. De maintainer hoeft niets aan te passen aan zijn GitHub Pages-instellingen. ---- +Wil je bijdragen? Zie [CONTRIBUTING.md](CONTRIBUTING.md). -## β¨ Features +## Achtergrond -- β **50+ Nederlandse data brokers** (ad-tech, credit bureaus, retail, telecom, media) -- β **GDPR Art. 21** (bezwaar), **Art. 17** (wissen), **Art. 15** (inzage) -- β **100% lokaal** β geen server, geen data-opslag, geen tracking -- β **Open source** (MIT license) -- β **Meta formulier-fix** β detecteert bedrijven die email vervingen door formulieren -- β **Notes systeem** β waarschuwt voor AP boetes, dark patterns, pre-consent tracking -- β **CategorieΓ«n** β credit bureaus, ad-tech, telecom, retail, media, analytics +In maart 2026 testte ik 5 Nederlandse nieuwssites op cookie compliance. NU.nl bleek 104 van 121 ad-partners niet bij naam te noemen. NOS.nl plaatst cookies voor de banner verschijnt. Google staat op elke geteste site. ---- +Onderzoek: https://medium.com/@mick.ronan.beer -## π Gebruik +## Ondersteunde bedrijven -### **Online (aanbevolen):** +60+ bedrijven verdeeld over credit bureaus, ad-tech, media, telecom, retail, analytics en marketing clouds. Zie `static/js/script.js` voor de volledige lijst. Er is ook een "ander bedrijf" optie voor handmatige invoer. -1. Ga naar https://apolloccrypt.github.io/nl-data-optout/ -2. Vul je naam en email in -3. Selecteer een bedrijf -4. Kies verzoek type (bezwaar, wissen, inzage, of beide) -5. Klik "Genereer bezwaarmail" -6. Open in je mailprogramma of kopieer de tekst +## Privacy -**Tijd:** 2 minuten per bedrijf +Alles draait lokaal. Geen server, geen opslag, geen tracking. De tool genereert alleen tekst, jij verstuurt de mail dus zelf. ---- +## Bijdragen -### **Lokaal draaien:** +Zie [CONTRIBUTING.md](CONTRIBUTING.md). Verouderd contactadres of bug? Open een [issue](https://github.com/Apolloccrypt/nl-data-optout/issues). -```bash -git clone https://github.com/Apolloccrypt/nl-data-optout.git -cd nl-data-optout -# Open index.html in je browser (geen server nodig) -``` +## Licentie ---- +MIT. Zie [LICENSE](LICENSE). -## π’ Ondersteunde Bedrijven (60+) +## Contact -### **Credit Bureaus (6)** -- Experian Nederland (β¬2.7M AP boete 2025) -- Graydon, Creditsafe, Focum BV, Dun & Bradstreet, Bisnode - -### **Ad-Tech & Tracking (27)** -- Google (100% aanwezig op NL sites) -- Criteo (80% aanwezig) -- Index Exchange (80% aanwezig) -- Meta/Facebook β οΈ (formulier vereist sinds maart 2026) -- TikTok, LinkedIn, Twitter/X, Snapchat, Pinterest -- Amazon Ads, The Trade Desk, Magnite, PubMatic, OpenX -- Outbrain, Taboola, Xandr, AppNexus, AdForm, Sizmek -- MediaMath - -### **Media & Publishers (6)** -- DPG Media (NU.nl, AD.nl) β 104 van 121 partners niet genoemd -- NPO/NOS β pre-consent tracking -- RTL Nederland, Sanoma, Mediahuis, Talpa - -### **Telecom (7)** -- KPN, VodafoneZiggo, T-Mobile/Odido, Tele2 -- Youfone, Simyo, Lebara - -### **Retail & E-Commerce (10)** -- Kruidvat (β¬600k AP boete cookie wall) -- Coolblue (β¬40k AP boete pre-consent) -- Bol.com (best practice: 100% disclosure) -- Albert Heijn, Wehkamp, Zalando, HEMA, Action, MediaMarkt, Jumbo - -### **Analytics (6)** -- Smartocto/Content Insights (gebruikt door NOS) -- Piano, Comscore, Nielsen, Chartbeat - -### **Marketing Clouds (5)** -- Salesforce, Adobe, Oracle, HubSpot, Mailchimp - -**+ "Ander bedrijf" optie** voor handmatige invoer - -Volledige lijst: zie `index.html` regel 119-180 - ---- - -## π Privacy & Veiligheid - -### **100% Lokaal** -- Geen server-side code -- Geen data-opslag -- Geen cookies -- Geen tracking -- Geen third-party scripts - -### **Open Source** -- Volledige broncode beschikbaar -- Auditeerbaar (200 regels JavaScript) -- MIT License (vrij te gebruiken) - -### **Hoe het werkt:** -1. JavaScript draait lokaal in je browser -2. Template wordt gegenereerd (client-side) -3. `mailto:` link opent je mail-app -4. **JIJ** verstuurt de mail (niet de tool) - -**De tool stuurt NIETS zelf** β het genereert alleen tekst voor jou. - ---- - -## βοΈ Juridische Basis - -### **GDPR Rechten:** - -**Art. 21 - Recht op bezwaar:** -> "Je kunt bezwaar maken tegen verwerking voor direct marketing, profiling en tracking." - -**Art. 17 - Recht om vergeten te worden:** -> "Je kunt verwijdering van je gegevens eisen als er geen wettelijke bewaarplicht is." - -**Art. 15 - Recht op inzage:** -> "Je kunt opvragen welke persoonsgegevens een bedrijf van jou verwerkt." - -### **Reactietermijn:** -Bedrijven hebben **1 maand** om te reageren (Art. 12 GDPR). - -### **Bij weigering:** -- Vraag gemotiveerde uitleg -- Dien klacht in bij [Autoriteit Persoonsgegevens](https://autoriteitpersoonsgegevens.nl/nl/zelf-doen/privacyrechten/melden) - -### **Precedenten:** -- **Experian:** β¬2.7M boete (oktober 2025) β vendors niet bij naam -- **Kruidvat:** β¬600k boete β cookie wall -- **Coolblue:** β¬40k boete β pre-consent tracking - ---- - -## π οΈ Technologie - -- **HTML5** β structuur -- **Vanilla JavaScript** β geen frameworks -- **CSS3** β styling -- **GitHub Pages** β hosting - -**Geen build step, geen dependencies, geen npm.** Gewoon HTML/CSS/JS. - ---- - -## π Bug Melden? - -### **Contact veranderd?** -Als een bedrijf zijn privacy-email heeft gewijzigd, [open een Issue](https://github.com/Apolloccrypt/nl-data-optout/issues/new?template=broken-contact.md). - -**Voorbeeld:** Meta/Facebook verving `datarequests@support.facebook.com` met een formulier in maart 2026. Gebruiker Tobias L. meldde dit β fix binnen 24u. - -### **Nieuw bedrijf toevoegen?** -Open een [Feature Request](https://github.com/Apolloccrypt/nl-data-optout/issues/new?template=feature-request.md) met: -- Bedrijfsnaam -- Privacy email (meestal `privacy@bedrijf.nl`) -- Categorie - ---- - -## π€ Bijdragen - -Bijdragen welkom! Zie [CONTRIBUTING.md](CONTRIBUTING.md) voor richtlijnen. - -### **Pull Requests:** -- Update `brokers` array in `index.html` -- Test lokaal (open `index.html` in browser) -- Update `CHANGELOG.md` -- Submit PR - -### **Community:** -- [GitHub Issues](https://github.com/Apolloccrypt/nl-data-optout/issues) -- [LinkedIn: Mick Beer](https://linkedin.com/in/mick-beer) - ---- - -## π Impact - -**Doel:** Als 1000 mensen dit gebruiken = 10.000 GDPR-verzoeken verstuurd. - -**Kosten voor bedrijven:** β¬50 per verzoek (handmatige verwerking) = **β¬500.000 overhead**. - -**Effect:** Bij β¬500k wordt massale tracking economisch onhoudbaar. -β Bedrijven moeten kiezen: **transparanter worden** of **stoppen**. - -**Collectieve actie werkt.** πͺ - ---- - -## π Licentie - -**MIT License** β vrij te gebruiken, aanpassen, distribueren. - -Zie [LICENSE](LICENSE) voor details. - ---- - -## π Contact - -**Maker:** Mick Beer -**LinkedIn:** https://linkedin.com/in/mick-beer -**GitHub:** https://github.com/Apolloccrypt - -**Onderzoek:** -- [Medium artikel](https://medium.com/p/75744f8645c6) (volledig onderzoek) -- [LinkedIn post](https://linkedin.com/posts/mick-beer_nl-data-brokers-opt-out-tool-activity-7441146526682202112-F_v7) - ---- - -## β οΈ Disclaimer - -**Dit is GEEN juridisch advies.** - -Deze tool helpt bij uitoefenen GDPR-rechten. Raadpleeg privacy-advocaat of [Autoriteit Persoonsgegevens](https://autoriteitpersoonsgegevens.nl) bij twijfel. - -Maker niet aansprakelijk voor gebruik. Eigen verantwoordelijkheid. - -Voor juridisch advies: advocaat of AP. - ---- - -## π Support dit project - -**Vind je dit nuttig?** - -- β **Star deze repo** op GitHub -- π **Deel** met vrienden/familie -- π’ **Post** op social media -- π **Meld bugs** via Issues -- π‘ **Voeg bedrijven toe** via PR - -**Samen maken we tracking transparanter.** π‘οΈ - ---- - -## π Bronnen - -- [GDPR volledige tekst](https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX:32016R0679) -- [ePrivacy Richtlijn](https://eur-lex.europa.eu/legal-content/NL/TXT/?uri=CELEX:32002L0058) -- [AP Cookie Richtsnoeren](https://autoriteitpersoonsgegevens.nl/themas/internet-telefoon-post/cookies) -- [CJEU Planet49 (C-673/17)](https://curia.europa.eu/juris/document/document.jsf?docid=218462) - ---- - -Made with β€οΈ for privacy β’ Open Source β’ Community-Driven
-v1.1.0 β’ Last update: March 21, 2026
+Mick Beer β https://mickbeer.com β https://www.linkedin.com/in/mick-beer/ diff --git a/REPO-OVERVIEW.md b/REPO-OVERVIEW.md deleted file mode 100644 index 3f9068b..0000000 --- a/REPO-OVERVIEW.md +++ /dev/null @@ -1,270 +0,0 @@ -# β COMPLETE GITHUB REPO - KLAAR VOOR DEPLOYMENT - -## π COMPLETE FILE STRUCTURE - -``` -nl-data-optout/ -βββ index.html β Main tool (60+ brokers, Meta fix, notes system) -βββ README.md β Complete documentation (impact, legal, usage) -βββ CHANGELOG.md β Version history (v1.0.0 β v1.1.0) -βββ CONTRIBUTING.md β Contribution guidelines -βββ DEPLOYMENT.md β Update & deployment guide -βββ LICENSE β MIT License -βββ .gitignore β Git ignore rules -βββ .github/ - βββ ISSUE_TEMPLATE/ - βββ config.yml β Template configuration - βββ broken-contact.md β Report broken contacts - βββ feature-request.md β Add new brokers - βββ bug-report.md β Bug reports -``` - -**Total:** 11 files - ---- - -## π― WHAT'S NEW IN v1.1.0 - -### **Major Features:** - -β **Meta/Facebook Fix** (Tobias feedback!) -- Detecteert dat Meta email niet meer werkt -- Toont formulier instructies + link -- Kopieert template naar clipboard -- Dark pattern waarschuwing - -β **60+ Brokers** (was 25) -- Credit Bureaus: 6 -- Ad-Tech: 27 -- Media: 6 -- Telecom: 7 -- Retail: 10 -- Analytics: 6 -- Marketing: 5 - -β **Notes System** -- AP boetes vermeld (Experian β¬2.7M, Kruidvat β¬600k, Coolblue β¬40k) -- Pre-consent tracking warnings (NOS, Coolblue) -- Vendor disclosure issues (DPG Media: 104/121) -- Best practice highlights (Bol.com: 100% disclosure) - -β **UI Improvements** -- Warning banner voor speciale instructies -- Info boxes voor dark patterns -- Copy to clipboard knop -- Betere mobile responsive -- Footer met versie + changelog link - -β **Community Features** -- GitHub Issue templates (3 types) -- CONTRIBUTING.md (hoe bij te dragen) -- DEPLOYMENT.md (how to update) -- CHANGELOG.md (version tracking) -- Bug report instructies - ---- - -## π DEPLOYMENT INSTRUCTIES - -### **Option 1: Replace Existing Repo (Recommended)** - -```bash -# Backup current repo (optional) -cd ~/path/to/nl-data-optout -cp -r . ../nl-data-optout-backup - -# Replace all files -rm -rf * # WARNING: This deletes everything! -rm -rf .github .gitignore # Hidden files too - -# Copy new files from downloaded folder -cp -r /path/to/downloaded/github-repo-v2/* . -cp -r /path/to/downloaded/github-repo-v2/.github . -cp /path/to/downloaded/github-repo-v2/.gitignore . - -# Check everything -ls -la - -# Commit -git add . -git commit -m "Release v1.1.0 - Meta fix + 60 brokers + community features" -git push origin main - -# Wait 1-2 minutes, then check: -# https://apolloccrypt.github.io/nl-data-optout/ -``` - ---- - -### **Option 2: Fresh Clone (If Starting Fresh)** - -```bash -# If you want to start completely fresh -cd ~/Desktop -mv nl-data-optout nl-data-optout-old -mkdir nl-data-optout -cd nl-data-optout - -# Copy all files from downloaded folder -cp -r /path/to/downloaded/github-repo-v2/* . -cp -r /path/to/downloaded/github-repo-v2/.github . -cp /path/to/downloaded/github-repo-v2/.gitignore . - -# Initialize Git -git init -git add . -git commit -m "Initial commit - v1.1.0" - -# Connect to GitHub -git remote add origin https://github.com/Apolloccrypt/nl-data-optout.git -git branch -M main -git push -u origin main --force # CAREFUL: Overwrites remote! -``` - ---- - -## π§ͺ TESTING CHECKLIST - -**Before pushing to GitHub:** - -- [ ] Open `index.html` in browser (locally) -- [ ] Test 3-5 brokers (select + generate email) -- [ ] Test Meta (should show formulier warning) -- [ ] Test "Andere" option (manual entry) -- [ ] Check mobile (resize to 375px width) -- [ ] All links work (GitHub, Medium, LinkedIn) -- [ ] No JavaScript errors (F12 console) - -**After pushing:** - -- [ ] Wait 1-2 minutes (GitHub Pages rebuild) -- [ ] Visit https://apolloccrypt.github.io/nl-data-optout/ -- [ ] Hard refresh (Ctrl+F5 / Cmd+Shift+R) -- [ ] Test 1-2 brokers to confirm live -- [ ] Check broker count shows "60+" -- [ ] Test Meta β should show form warning - ---- - -## π§ REPLY TO TOBIAS - -**Once deployed, reply on LinkedIn:** - -``` -β Fixed, Tobias! - -Tool is updated (v1.1.0): -β’ Meta contact form geΓ―mplementeerd -β’ Dark pattern waarschuwing toegevoegd -β’ 60+ brokers (was 25) -β’ Issue templates voor toekomstige reports - -Live: apolloccrypt.github.io/nl-data-optout - -Refresh de pagina, selecteer Meta/Facebook, je ziet nu een formulier-instructie ipv mailto link. - -Bedankt voor je waardevolle feedback - dit helpt iedereen! π - -PS: GitHub repo heeft nu ook Issue templates, dus toekomstige -contact-wijzigingen kunnen direct gerapporteerd worden: -github.com/Apolloccrypt/nl-data-optout/issues -``` - ---- - -## π FILE DETAILS - -### **index.html** (Main Tool) -- Lines: ~430 -- Brokers: 60 -- Features: Meta fix, notes, clipboard copy, dark pattern warnings -- Size: ~18 KB - -### **README.md** (Documentation) -- Sections: 12 -- Links: 15+ -- Badges: 3 -- Size: ~11 KB - -### **CHANGELOG.md** (Version History) -- Versions: 2 (v1.0.0, v1.1.0) -- Format: Keep a Changelog -- Includes: Meta contact change documentation - -### **CONTRIBUTING.md** (Contribution Guide) -- Sections: 9 -- Includes: Code style, PR process, priority issues -- Size: ~4 KB - -### **DEPLOYMENT.md** (Update Guide) -- Sections: 10 -- Includes: Git commands, testing checklist, rollback -- Size: ~4 KB - -### **LICENSE** (MIT) -- Standard MIT License -- Copyright: 2026 Mick Beer - -### **.gitignore** -- Ignores: OS files, editor files, logs, temp files - -### **Issue Templates** (3) -- broken-contact.md (report email changes) -- feature-request.md (add new brokers) -- bug-report.md (technical issues) -- config.yml (template configuration) - ---- - -## π― NEXT STEPS - -**Immediately:** -1. [ ] Deploy to GitHub (replace or fresh clone) -2. [ ] Test live site (wait 1-2 min) -3. [ ] Reply to Tobias on LinkedIn -4. [ ] Update LinkedIn post (optional: "Tool updated v1.1.0") - -**This Week:** -1. [ ] Monitor GitHub issues (watch for new reports) -2. [ ] Check LinkedIn for tool feedback -3. [ ] Screenshot new version (for future Medium update) - -**Week 2:** -1. [ ] AP melding (with "10k+ views" enhancement) -2. [ ] Media outreach (if tool >5k users) - ---- - -## β WHAT YOU HAVE NOW - -**Complete, production-ready GitHub repo with:** - -β 60+ Dutch data brokers -β Meta formulier fix -β AP boete notes (β¬3.9M total precedents) -β Dark pattern detection -β Community contribution system -β Professional documentation -β Issue templates -β Deployment guides -β MIT License -β Mobile responsive -β 100% local (no tracking) -β Version 1.1.0 (production ready) - -**STATUS:** π’ READY TO DEPLOY - ---- - -## π SUPPORT - -If you need help deploying: -- DM me details -- Or: I can walk through Git commands step-by-step -- Or: Share screen (if needed) - -**This is complete and tested** - ready to go live! π - ---- - -KLAAR OM TE DEPLOYEN? πͺ
diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..3a4481b --- /dev/null +++ b/content/_index.md @@ -0,0 +1,3 @@ +--- +title: "NL Data Brokers Opt-Out Tool" +--- diff --git a/content/nl/_index.md b/content/nl/_index.md new file mode 100644 index 0000000..3a4481b --- /dev/null +++ b/content/nl/_index.md @@ -0,0 +1,3 @@ +--- +title: "NL Data Brokers Opt-Out Tool" +--- diff --git a/hugo.toml b/hugo.toml new file mode 100644 index 0000000..1c07672 --- /dev/null +++ b/hugo.toml @@ -0,0 +1,30 @@ +baseURL = "https://apolloccrypt.github.io/nl-data-optout/" +defaultContentLanguage = "nl" +defaultContentLanguageInSubdir = false +enableRobotsTXT = true +disableKinds = ["taxonomy", "term"] + +[languages] + [languages.nl] + languageCode = "nl" + languageName = "Nederlands" + title = "NL Data Opt-Out" + weight = 1 + [languages.nl.params] + description = "Genereer gratis GDPR-verzoeken naar 60+ Nederlandse data brokers. 100% lokaal β geen data opgeslagen." + + [languages.en] + languageCode = "en" + languageName = "English" + title = "NL Data Opt-Out" + weight = 2 + [languages.en.params] + description = "Generate free GDPR requests to 60+ Dutch data brokers. Runs 100% locally β no data stored." + +[params] + github = "https://github.com/Apolloccrypt/nl-data-optout" + version = "2.0.2" + author = "Mick Beer" + authorUrl = "https://mickbeer.com" + linkedin = "https://www.linkedin.com/in/mick-beer/" + donate = "https://www.buymeacoffee.com/mickbeer" diff --git a/i18n/en.yaml b/i18n/en.yaml new file mode 100644 index 0000000..5906414 --- /dev/null +++ b/i18n/en.yaml @@ -0,0 +1,64 @@ +disclaimer_short: "Not legal advice. This tool helps you exercise your GDPR rights (Art. 15, 17 and 21). When in doubt, consult your" +disclaimer_dpa: "national Data Protection Authority" +disclaimer_full_link: "Full disclaimer" + +hero_title: "NL Data BrokersDit is GEEN juridisch advies. Deze tool helpt bij het uitoefenen van GDPR-rechten (Art. 21, 17, 15). Raadpleeg een privacy-advocaat of autoriteitpersoonsgegevens.nl bij twijfel. Maker niet aansprakelijk. Eigen verantwoordelijkheid. Volledige disclaimer onderaan.
-Genereer snel GDPR Art. 21 (bezwaar), Art. 17 (wissen) of Art. 15 (inzage) mails naar Nederlandse data brokers, ad-tech, telecom, retail en media bedrijven. Alles lokaal in je browser β geen data-opslag.
- -Door te genereren accepteer je deze voorwaarden.
- -Als een contact email niet meer werkt of je vindt fouten, open een GitHub Issue of tag @mickbeer op LinkedIn.
- -
- β’ Volledig onderzoek (Medium)
- β’ Autoriteit Persoonsgegevens
- β’ GitHub Repository
-
+ {{ i18n "hero_description" }} +
+ 62 {{ i18n "hero_broker_label" }} ++ {{ if eq .Lang "nl" }}Recht op inzage{{ else }}Right of access{{ end }} +
++ {{ i18n "art15_text" }} +
+ ++ {{ if eq .Lang "nl" }}Recht op gegevens verwijderen{{ else }}Right to erasure{{ end }} +
++ {{ i18n "art17_text" }} +
+ ++ {{ if eq .Lang "nl" }}Recht van bezwaar{{ else }}Right to object{{ end }} +
++ {{ i18n "art21_text" }} +
+ ++ + + {{ i18n "rights_eurlex" }} (Regulation (EU) 2016/679) + +
+{{ i18n "disclaimer_accept" }}
+{{ i18n "about_intro" }}
+ +{{ i18n "about_scope_title" }}
+{{ i18n "about_scope" }}
+ +{{ i18n "about_goals_title" }}
+{{ i18n "about_footer" }}
+