Rebuild as InnungsApp project: replace stadtwerke analysis with full documentation

- PRD: vollständige Produktspezifikation (5 Module, Scope, Akzeptanzkriterien)
- ARCHITECTURE: Tech Stack, Ordnerstruktur, Multi-Tenancy, Push, Kosten
- DATABASE_SCHEMA: Vollständiges SQL-Schema mit RLS Policies und Views
- USER_STORIES: 40+ Stories nach Rolle (Admin, Mitglied, Azubi, Obermeister)
- PERSONAS: 5 detaillierte Nutzerprofile mit Alltag, Zitaten und Erwartungen
- BUSINESS_MODEL: Preistabellen, Unit Economics, Revenue-Projektionen, Distribution
- ROADMAP: 6 Phasen, Sprint-Planung, Meilensteine und KPIs
- COMPETITIVE_ANALYSIS: Wettbewerbsmatrix, USPs, Preispositionierung
- API_DESIGN: Supabase Query Patterns, Edge Functions, Realtime Subscriptions
- ONBOARDING_FLOWS: 7 User Flows von Setup bis Fehlerfall
- GTM_STRATEGY: 3-Phasen-Vertrieb, Outreach-Sequenz, Einwandbehandlung
- AZUBI_MODULE: Video-Feed, 1-Click-Apply, Chat, Berichtsheft, Quiz
- DSGVO_KONZEPT: Rechtsgrundlagen, TOMs, AVV, Minderjährige, Incident Response
- FEATURES_BACKLOG: 72 Features nach MoSCoW + Technische Schulden

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Timo Knuth
2026-02-18 19:03:37 +01:00
parent fc68285cf1
commit fca42db4d2
116 changed files with 9329 additions and 6479 deletions

231
DSGVO_KONZEPT.md Normal file
View File

@@ -0,0 +1,231 @@
# InnungsApp — DSGVO & Datenschutzkonzept
---
## 1. Überblick
InnungsApp verarbeitet personenbezogene Daten von:
- Innungsgeschäftsführern und Admins
- Mitgliedsbetrieben (Betriebsinhaber)
- Azubi-Bewerbern (Minderjährige möglich!)
- Auszubildenden (Minderjährige möglich!)
Dies begründet hohe DSGVO-Anforderungen — insbesondere bei Minderjährigen.
---
## 2. Rechtsgrundlagen
| Verarbeitung | Rechtsgrundlage | Artikel DSGVO |
|---|---|---|
| Mitgliederverwaltung | Berechtigtes Interesse der Innung | Art. 6 Abs. 1 lit. f |
| Kommunikation (News) | Berechtigtes Interesse | Art. 6 Abs. 1 lit. f |
| Lehrlingsbörse (Betrieb) | Vertragserfüllung | Art. 6 Abs. 1 lit. b |
| Lehrlingsbörse (Bewerber) | Einwilligung | Art. 6 Abs. 1 lit. a |
| Azubi-Profil (Minderjährige) | Elterliche Einwilligung (< 16 J.) | Art. 8 DSGVO |
| Analytics (PostHog) | Berechtigtes Interesse | Art. 6 Abs. 1 lit. f |
| Push Notifications | Einwilligung | Art. 6 Abs. 1 lit. a |
---
## 3. Datenkategorien & Speicherdauer
### Mitgliedsdaten
| Datenkategorie | Speicherdauer | Begründung |
|---|---|---|
| Name, Betrieb, Kontaktdaten | Mitgliedschaft + 3 Jahre | Handelsrechtliche Aufbewahrungspflicht |
| E-Mail (Auth) | Bis Kontolöschung | Technisch notwendig |
| Push Tokens | Bis Abmeldung / App-Deinstallation | Technisch notwendig |
| Lesestatus (news_reads) | 12 Monate | Analytics, danach Anonymisierung |
| Login-Logs | 30 Tage | Sicherheit |
### Azubi-Bewerber-Daten
| Datenkategorie | Speicherdauer | Begründung |
|---|---|---|
| Bewerberprofil | 6 Monate nach letzter Aktivität | Automatische Löschung |
| Chat-Nachrichten | 90 Tage nach Gesprächsende | Automatische Löschung |
| Video-Views (anonym) | 90 Tage | Analytics |
### Logs & Analytics
| Datenkategorie | Speicherdauer |
|---|---|
| Supabase Auth Logs | 30 Tage |
| PostHog Events | 12 Monate (anonymisiert nach 3 Monaten) |
| Edge Function Logs | 7 Tage |
---
## 4. Auftragsverarbeitung (AVV)
InnungsApp ist **Auftragsverarbeiter** für die Innungen.
Innungen sind **Verantwortliche** für die Daten ihrer Mitglieder.
### AVV-Pflicht
Mit jeder Innung wird ein AVV (Auftragsverarbeitungsvertrag) abgeschlossen:
- Elektronisch im Onboarding-Prozess
- Signatur via Klick-Einwilligung (dokumentiert)
- Bestandteil der AGBs
### AVV-Inhalte (Kernanforderungen)
- Gegenstand und Dauer der Verarbeitung
- Art und Zweck der Verarbeitung
- Art der personenbezogenen Daten
- Kategorien betroffener Personen
- Pflichten und Rechte des Verantwortlichen (Innung)
- Technische und organisatorische Maßnahmen (TOMs)
- Sub-Auftragsverarbeiter (Supabase, Resend, etc.)
---
## 5. Sub-Auftragsverarbeiter
| Anbieter | Zweck | Standort | Datenschutz-Basis |
|---|---|---|---|
| **Supabase** | Datenbank, Auth, Storage | EU (Frankfurt, AWS eu-central-1) | EU-Standardvertragsklauseln |
| **Vercel** | Web-Hosting Admin | USA + EU-Edge | EU-SCC, EU-Daten bleiben in EU |
| **Resend** | Transaktions-E-Mails | USA | EU-SCC |
| **Expo / EAS** | App-Build, Push-Routing | USA | EU-SCC |
| **PostHog** | Analytics | EU (optional) | EU-Hosting wählbar |
| **Mux** | Video-Hosting (Post-MVP) | USA | EU-SCC |
**Wichtig:** Alle kritischen Daten (Mitgliederdaten, Auth) liegen in Supabase Frankfurt (EU). US-Anbieter erhalten nur technisch notwendige Minimal-Daten.
---
## 6. Technische & Organisatorische Maßnahmen (TOMs)
### Vertraulichkeit
- **Datenverschlüsselung in Transit:** TLS 1.3 für alle Verbindungen
- **Datenverschlüsselung at Rest:** AES-256 via Supabase (AWS KMS)
- **Row Level Security:** Strikte Datenisolation auf Datenbankebene
- **JWT-basierte Auth:** Kurzlebige Access Tokens (1 Stunde), Refresh Tokens (7 Tage)
- **Magic Link:** Einmalig verwendbar, 7 Tage gültig
### Integrität
- **Audit Logs:** Alle Admin-Aktionen werden geloggt (wer hat was wann geändert)
- **Backup:** Supabase automatisch täglich (30 Tage Retention im Pro-Plan)
- **Input Validation:** Server-seitige Validierung aller Formulare (Zod Schemas)
### Verfügbarkeit
- **Supabase SLA:** 99,5 % Uptime
- **Multi-AZ:** Supabase verwendet PostgreSQL mit Standby in separater AZ
- **CDN:** Vercel und Supabase Storage mit globalem CDN
### Zugriffskontrolle
- **Role-based Access Control:** `admin` | `member` | `public`
- **Principle of Least Privilege:** Jede Rolle nur Minimalrechte
- **Admin-Zugang:** Nur via Supabase Dashboard mit 2FA
- **Mitarbeiter-Schulung:** Jährliche DSGVO-Unterweisung
---
## 7. Betroffenenrechte
### Auskunftsrecht (Art. 15 DSGVO)
**Prozess:**
1. Betroffene Person sendet E-Mail an datenschutz@innungsapp.de
2. Identität wird verifiziert (Magic Link oder Ausweiskopie)
3. Auskunft innerhalb von 30 Tagen
4. Format: PDF mit allen gespeicherten Daten
### Recht auf Löschung (Art. 17 DSGVO)
**Self-Service in der App:**
- Einstellungen → "Konto löschen"
- Sofortige Anonymisierung der personenbezogenen Daten
- Technische Daten werden nach 30 Tagen endgültig gelöscht
- Auth-Account wird sofort gelöscht
**Admin-seitige Löschung:**
- Admin kann Mitglied deaktivieren (kein Datenzugriff)
- Vollständige Löschung auf Anfrage an InnungsApp innerhalb 30 Tage
### Recht auf Datenübertragbarkeit (Art. 20 DSGVO)
- Export als JSON oder CSV auf Anfrage
- Enthält: Profildaten, News-Leseverlauf, Terminanmeldungen, eigene Stellen
### Widerspruchsrecht (Art. 21 DSGVO)
- Push Notifications: jederzeit in App-Einstellungen deaktivierbar
- Analytics: Opt-Out via Einstellungsmenü (PostHog Cookie-freies Tracking)
---
## 8. Besondere Anforderungen: Minderjährige
### Problem
Azubi-Bewerber können 1516 Jahre alt sein → Minderjährige nach DSGVO Art. 8.
### Lösung
**Altersabfrage bei Registrierung:**
- "Sind Sie unter 16 Jahre alt?" (Ja / Nein)
- Bei "Ja": Elterliche Einwilligung erforderlich
**Einwilligungs-Flow (unter 16):**
1. App zeigt: "Für Personen unter 16 Jahren benötigen wir die Zustimmung eines Erziehungsberechtigten."
2. E-Mail-Adresse des Erziehungsberechtigten eingeben
3. Erziehungsberechtigter erhält E-Mail mit Einwilligung-Link
4. Nach Bestätigung: Bewerber-Profil freigegeben
**Minimale Datenerhebung bei Minderjährigen:**
- Kein Geburtsdatum gespeichert (nur "unter/über 16")
- Keine Adresse
- Keine Fotos ohne explizite Einwilligung
- Chat: automatische Löschung nach 30 Tagen
---
## 9. Datenschutzerklärung & Impressum
### Pflichtangaben
**Datenschutzerklärung** (auf innungsapp.de + in App abrufbar):
- Verantwortlicher: Timo Knuth, [Adresse]
- Datenschutzbeauftragter: (ab 20 Mitarbeiter oder sensible Daten: Pflicht — für MVP: optional)
- Kategorien verarbeiteter Daten
- Zwecke und Rechtsgrundlagen
- Speicherdauer
- Sub-Auftragsverarbeiter
- Betroffenenrechte + Beschwerderecht bei Aufsichtsbehörde
**Aufsichtsbehörde BW:**
Der Landesbeauftragte für den Datenschutz und die Informationsfreiheit Baden-Württemberg
Lautenschlagerstraße 20, 70173 Stuttgart
### Cookie-Policy
- InnungsApp Mobile: keine Cookies (Native App)
- Admin Web: Session Cookie (Supabase Auth) — notwendig, kein Banner erforderlich
- Analytics (PostHog): Cookie-freies Tracking (pixel-los) — kein Banner erforderlich
---
## 10. Incident Response Plan
### Bei Datenpanne
1. **Erkennung** → intern oder via Supabase-Alert
2. **Bewertung** (< 24h): Umfang, betroffene Personen, Risiko
3. **Meldung an Aufsichtsbehörde** (< 72h, Art. 33 DSGVO) wenn Risiko für Betroffene
4. **Benachrichtigung der Betroffenen** wenn hohes Risiko (Art. 34 DSGVO)
5. **Dokumentation** im Verarbeitungsverzeichnis
### Technische Reaktionsmaßnahmen
- Supabase Auth: Alle Sessions ungültig machen (1 Klick)
- Betroffene Innungen isolieren (org_id deaktivieren)
- Logs sichern (vor Löschung durch Rotation)
- Passwörter: nicht relevant (Magic Link, kein Passwort)