# 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 15–16 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)
