Wie ich ein DSGVO-matures SaaS-Side-Project mit Chrome Extension baute
Gewinnspiel-Plattform mit Manifest-V3-Chrome-Extension, lokalem Template-Generator (kein KI-API) und EU-nativem Supabase-Setup — als pnpm-Monorepo mit shared package.
- Branche
- Side-Project / SaaS (Invite-only)
- Region
- EU-nativ (Supabase Frankfurt/Irland)
- Zeitraum
- Laufend seit 2025, aktuelle Version v0.27
- Umfang
- pnpm-Monorepo mit Web-App (React 19 + Vite), Manifest-V3-Chrome-Extension und shared TypeScript-Package
- Ergebnis
- 59 Supabase-Migrationen mit RLS auf allen Tabellen, vollständiges Verarbeitungsverzeichnis nach Art. 30 DSGVO.
- Stack
- pnpm-MonorepoReact 19 + Vite 6 + Tailwind 3Manifest V3 + CRXJS (Hot-Reload-Extension)Supabase (PostgreSQL, Auth, Realtime, RLS) — EU-Regionpg_cron für DSGVO-LöschfristenGitHub Actions CI/CD
Ausgangslage und Ansatz
Wer regelmäßig an Gewinnspielen teilnimmt, kennt das: dutzende Tabs, verpasste Deadlines, keine Übersicht. Ich wollte ein Tool bauen, das dieses Chaos aufräumt — und gleichzeitig zeigen, dass auch ein Side-Project DSGVO-mature aufgebaut sein kann.
- Monorepo mit shared package — Type-Safety über App-Grenzen
- Generator-Logik und Supabase-Client liegen in `packages/shared` und werden von Web-Dashboard und Chrome-Extension gleichermaßen importiert. Single Source of Truth, statisches Type-Sharing, ein zentraler Vitest-Lauf. Würde ich das zweimal pflegen, wäre der nächste Refactor ein Nervenkrieg.
- Manifest V3 mit CRXJS — moderne Extension-DX
- MV2 ist 2026 deprecated. CRXJS bringt Vite-Hot-Reload auch ins Extension-Setup — Content-Script, Background-Worker und Popup laden wie eine Web-App neu. Permissions sauber minimal: `tabs`, `clipboardWrite`, `storage`, `alarms`, `notifications`, ein einziger Host (instagram.com).
- Lokaler Template-Generator statt KI-API-Call
- Ursprünglich war eine Anthropic-API-Integration geplant — und versehentlich in die Datenschutzerklärung gewandert. Beim Audit konsequent rausgerissen: der Generator ist jetzt 100 % lokal, template-basiert, mit 300+ JSON-Bausteinen (Emojis, Ausrufe, Fragmente), Mood-Toggle (hype / chill / neutral), Caps-Stilen. Schneller, offline-fähig, kein Drittland-Transfer, Privacy by Design.
- EU-natives Supabase mit RLS auf jeder Tabelle
- EU-Region (Frankfurt / Irland). Postgres-Row-Level-Security konsequent auf allen relevanten Tabellen — User sieht nur seine eigenen Daten, das wird auf DB-Ebene erzwungen, nicht in der App-Logik. 59 Migrationen mit dokumentiertem Audit-Trail (RLS-Härtung, Berechtigungs-Audit, Index-Optimierung).
- DSGVO-Löschfristen über pg_cron — automatisiert, nicht manuell
- Abgelaufene Gewinnspiele werden nach 12 Monaten gelöscht, Kommentar-Historie nach 6 Monaten. Implementiert als `pg_cron`-Job auf Datenbank-Ebene — keine Möglichkeit, das im Stress zu vergessen. Account-Löschung kaskadiert über Foreign-Key-Constraints (CASCADE) auf alle abhängigen Daten.
- Verantwortungsbewusste Automation mit Rate-Limits
- Die Auto-Comment-Engine hat Multi-Level-Caps (20 Kommentare/h, 100/d), eine Nachtsperre (2–6 Uhr) und simuliert menschliches Verhalten (Bezier-Mausbewegungen, variable Tippgeschwindigkeit, 3 % Tippfehler-Quote, Ermüdungseffekt). Im Popup steht ein expliziter Risk-Disclaimer — Meta-ToS-Konflikt wird offen kommuniziert, nicht versteckt.
- Self-hosted Extension-Distribution
- Bewusst nicht im Chrome Web Store. Das ZIP wird selbst gehostet und nur an eingeladene User ausgeliefert. Hält den Nutzerkreis klein, vermeidet Web-Store-Privacy-Reviews und lässt mich Updates ohne Store-Review-Latenz pushen. Side-Project-Größe, nicht Massenmarkt.
- Vollständiges Verarbeitungsverzeichnis nach Art. 30 DSGVO
- Auch als Side-Project mit 2 Usern — Verarbeitungsverzeichnis, Interessenabwägung (Art. 6 (1) f), Auftragsverarbeiter-Liste (Supabase EU-DPA, Vercel DPF + SCCs, hCaptcha) sind dokumentiert. Wenn ich das nicht für mein eigenes Tool ernst nehme, wie soll ich es Kunden empfehlen?
Eine Plattform, die den Gewinnspiel-Workflow abdeckt — vom Entdecken bis zum Tracking — und gleichzeitig demonstriert, wie ein DSGVO-mature Side-Project aussehen kann: EU-nativ, RLS-protected, mit Auto-Cleanup und vollständigem Verarbeitungsverzeichnis. Build und Type-Safety aus einem Monorepo.
Lootivo ist ein Nebenprojekt — aber eins, bei dem ich alles selbst entscheiden konnte. Technik, Design, Compliance. Wenn man keinen Kunden überzeugen muss, baut man anders: gründlicher, gerade dort, wo es Kunden später kosten würde.
— Tobias
Verwandter Service: Webdesign-Service ansehen
Haben Sie eine Produktidee mit ähnlichen Anforderungen? Reden wir.
Ihr Projekt besprechen