Datenschutzerklärung
backend/README.md „Datenschutz-Hinweise“) und
müssen vor dem externen TestFlight vorliegen und in der App verlinkt sein.
Mit [JURISTISCH ZU PRÜFEN] markierte Punkte sind rechtliche
Einschätzungen, die vor Veröffentlichung geklärt werden müssen.
1. Verantwortlicher und Kontakt
TODO: Name, Anschrift, E-Mail (siehe Impressum); ggf. Datenschutzbeauftragter.
2. Überblick: Daten, Zwecke, Rechtsgrundlagen
TODO: Übersichtstabelle je Datenkategorie mit Zweck und Rechtsgrundlage (Art. 6 DSGVO). Pflichtangaben vs. freiwillige Angaben je Kategorie nennen (z. B. Anzeigename erforderlich für die Nutzung, Avatar freiwillig, Crash-Reports freiwillig).
3. Anmeldung mit Apple / Google
TODO: Anbieter, übermittelte Daten, Apple-„E-Mail verbergen“ (Private-Relay-Adresse als E-Mail möglich), Empfänger und Drittland-Grundlage (Angemessenheitsbeschluss / EU-US Data Privacy Framework / Standardvertragsklauseln) für Apple und Google [JURISTISCH ZU PRÜFEN].
4. Fahrten, Gutschriften, Gruppen
TODO: gespeicherte Daten (km, Zeitstempel, Faktor, Beteiligte). Keine GPS-Tracks und keine Bewegungsprofile auf dem Server (Plan Kap. 4.5). Adresssuche über den Geocoder des Betriebssystems: Empfänger Apple (iOS) bzw. Google (Android) als eigenständige Verantwortliche des Geräte-Dienstes, Hinweis auf deren Datenschutzerklärungen.
[JURISTISCH ZU PRÜFEN] Textentwurf (gemessene Fahrten, Phase 3): Bei Fahrten, die du per GPS misst, speichern wir zusätzlich den Nachtanteil der Strecke in Metern sowie den Tag- und Nachtfaktor deiner Gruppe zum Zeitpunkt der Fahrt. Diese Werte enthalten keinen Ortsbezug und sind im Datenexport enthalten.
[JURISTISCH ZU PRÜFEN] Textentwurf (Mitfahrer ohne Konto, wartende Fahrten): Mitfahrer ohne Konto (wartende Fahrten). Ist ein Mitfahrer noch nicht in der Gruppe, kannst du die Fahrt schon vorher speichern und optional einen Vor- oder Spitznamen (höchstens 20 Zeichen) angeben. Das ist freiwillig und sollte nur mit Wissen deines Mitfahrers geschehen. Der Name ist für die aktiven Mitglieder der Gruppe sichtbar; Zweck ist, die wartende Fahrt zuzuordnen, bis der Mitfahrer beitritt und sie bestätigt. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse an der Zuordnung; die Abwägung fällt wegen des kurzen, freiwilligen Namens und der kurzen Speicherdauer zugunsten der Verarbeitung aus). Der Name wird sofort gelöscht, sobald die Fahrt übernommen wird; sonst spätestens nach 30 Tagen, bei Löschen der wartenden Fahrt sowie beim Austritt oder bei der Löschung des Kontos des Fahrers. Übernommene Zeilen bleiben ohne Namen noch 24 Stunden bestehen. Der Name wird nicht in Push-Benachrichtigungen und nicht in Protokollen übertragen; Datenbank-Backups enthalten ihn bis zu 37 Tage. Bis zum Senden liegt eine wartende Fahrt (mit Namen) in der Warteschlange auf dem Gerät des Fahrers; auf iOS kann sie dort in Geräte-Backups gelangen. Bist du als Mitfahrer ohne Konto genannt, gelten deine Rechte nach Art. 15 bis 17 und 21 DSGVO auch ohne Konto: Schreib uns unter der Adresse aus Abschnitt 1 [Kontakt: TODO Platzhalter], wir löschen den Namen auf Hinweis.
4b. Fahrtmessung per GPS (freiwillig)
[JURISTISCH ZU PRÜFEN] Textentwurf:
- Wenn du „Fahrten automatisch messen“ einschaltest, nutzt die App deinen Standort nur während einer Fahrt, um die gefahrenen Kilometer und deren Tag-/Nachtanteil zu berechnen. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO; die Standortfreigabe erteilst du über die Systemdialoge und kannst sie jederzeit in den Systemeinstellungen widerrufen.
- Der GPS-Verlauf wird nicht an unsere Server übertragen und nicht dauerhaft gespeichert; die einzelnen Positionen liegen nur im Arbeitsspeicher deines Geräts.
- Bis du die Fahrt einträgst oder verwirfst, bleiben auf deinem Gerät: Start, Ziel und Haltepunkte (auf ca. 11 m gerundet) sowie die je Minute gefahrenen Meter. Sie werden beim Eintragen oder Verwerfen gelöscht, in der Regel nach 24 Stunden, spätestens beim nächsten Öffnen der App (die Frist gilt je Fahrt: Startest du die nächste Fahrt, bevor du die vorherige eingetragen hast, wartet diese bis zu 24 Stunden nach ihrem Ende, es warten höchstens drei Fahrten gleichzeitig [JURISTISCH ZU PRÜFEN]); die Löschung läuft im Hintergrund, sobald das System es zulässt. Beim Abmelden oder Löschen deines Kontos werden sie sofort gelöscht. Sie sind von Geräte-Backups ausgeschlossen.
- Automatischer Start (optional, nur mit Standortzugriff „Immer“): Wenn du ihn aktivierst, startet KmKarma die Messung selbst, sobald dein Handy mit deinem Auto verbunden ist (Bluetooth bzw. Kurzbefehl bei CarPlay), auch bei geschlossener App. Dafür nutzt die App den Standort im Hintergrund, aber nur während einer Fahrt. Ohne Aktivierung fragt dich die App per Benachrichtigung. Du kannst den automatischen Start jederzeit in der App (Fahrt-Erkennung) oder in den Systemeinstellungen abschalten; die Fahrt-Erkennung ohne Standort funktioniert weiter. Rechtsgrundlage hierfür ggf. Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) [JURISTISCH ZU PRÜFEN].
- Dein Auto erkennt die App über einen mit einem geräteeigenen Schlüssel gehashten Bluetooth-Bezeichner (pseudonym, nicht anonym); er verlässt dein Gerät nicht.
- Auf dem Sperrbildschirm, in Live Activity und Benachrichtigungen zeigt die App während einer Fahrt nur Karma, Kilometer, Faktor und Dauer sowie neutrale Hinweise wie „Fahrt erkannt“ – keine Orte und keine Personennamen. CarPlay und Android Auto zeigen während und nach der Fahrt nur Karma, Kilometer und Faktor, ebenfalls keine Orte und keine Personennamen; einzige Ausnahme ist der Gruppenname vor Fahrtbeginn (siehe unten).
- Fahrt am Auto-Display starten: Mit CarPlay und Android Auto kannst du eine Fahrt direkt am Display des Autos starten und beenden, ohne das Handy zu bedienen. Gestartet wird mit der Gruppe, die du zuletzt genutzt hast; dafür speichert die App auf deinem Gerät deren Tarif (Faktoren, Nachtzeiten, Zeitzone) und die Gruppen-ID. Vor Fahrtbeginn zeigen CarPlay und Android Auto außerdem, wenn du das einschaltest, den Namen dieser Gruppe (gekürzt auf 24 Zeichen). Er ist für alle im Auto sichtbar. Der Schalter „Gruppenname im Auto“ im Profil ist standardmäßig aus; schaltest du ihn aus, wird der Name sofort auf deinem Gerät gelöscht. Bitte wähle Gruppennamen ohne private oder sensible Angaben. Der Name wird nicht an unsere Server übertragen; er wird an das Auto-Display über Apple CarPlay bzw. Google Android Auto weitergegeben [JURISTISCH ZU PRÜFEN]. Beim Abmelden, Löschen des Kontos und Verlassen der Gruppe wird er gelöscht. Rechtsgrundlage für den Namen: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse, die richtige Gruppe vor dem Start zu erkennen), für den Start selbst lit. b [JURISTISCH ZU PRÜFEN].
4a. Badges, Jahresrückblick (Wrapped) und lokales Nutzungslog
[JURISTISCH ZU PRÜFEN] Textentwurf:
- Badges (Auszeichnungen): Der Server vergibt Badges (z. B. „Nachteule“, „Frühschicht“, „Kilometerfresser“, „Karma-König“) automatisch aus deinen bestätigten Fahrten. Zweck: spielerische Anerkennung. Verarbeitet werden Badge-Art, Gruppe, Zeitraum und Verleihungszeitpunkt. Es entstehen keine neuen Datenarten, die Auswertung nutzt vorhandene Fahrtdaten (Zeit, Strecke, Nachtfahrt). Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Nutzung der App-Funktion), hilfsweise lit. f.
- Sichtbarkeit: Deine Badges sehen die aktiven Mitglieder deiner Gruppe; ein Hinweis steht in der App. Verlässt du die Gruppe, bleiben die Badges gespeichert, sind aber nur noch für aktive Mitglieder der Gruppe sichtbar und nicht mehr für dich in dieser Gruppe abrufbar. Bei Löschung deines Kontos werden deine Badges gelöscht. Es gibt keine Negativ-Badges und keine Ranglisten über Badges. Es werden keine Push-Nachrichten zu Badges versendet.
- Jahresrückblick (Wrapped): Kennzahlen (Kilometer, Anzahl und Nachtanteil der Fahrten, Gutschriften, Badges) berechnet der Server aus deinen bestätigten Fahrten und liefert sie nur an dich. Das teilbare Bild wird auf deinem Gerät erzeugt; es enthält keine Namen, keine Avatare, keine Gruppennamen und keine Karten. Teilen ist freiwillig; mit dem Teilen entscheidest du, wer das Bild erhält, KmKarma erhält es nicht. Die „Top-Strecke“ wird ausschließlich auf deinem Gerät ermittelt und erscheint im Bild nur, wenn du sie vor dem Teilen aktivierst.
- Lokales Nutzungslog: Auf deinem Gerät zählt die App, wie oft du einen gespeicherten Routen-Favoriten pro Jahr
nutzt (Schlüssel
favorite_usage_v1), und merkt sich, welche Badges du schon gesehen hast (achievements_seen_v1). Nichts davon wird an den Server übertragen. Einträge älter als zwei Jahre und Einträge zu gelöschten Favoriten werden entfernt; beim Abmelden, Nutzerwechsel und bei Kontolöschung wird alles gelöscht.
5. Löschung = Pseudonymisierung
TODO: Konto-Löschung pseudonymisiert, sie anonymisiert nicht: Fahrten bleiben für die Salden der Gruppe erhalten und sind personenbeziehbar. Rechtsgrundlage der Aufbewahrung: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse der Gruppenmitglieder an nachvollziehbaren Salden) [JURISTISCH ZU PRÜFEN], Interessenabwägung und Widerspruchsrecht erläutern.
6. Speicherdauern je Kategorie
TODO: Tabelle. Vorgesehene Werte (vor Veröffentlichung mit der tatsächlichen Konfiguration abgleichen):
- Access-Logs des Proxys: 7 Tage, ohne IP-Adresse, Pfad und Query-String
- Datenbank-Backups: 30 Tage, verschlüsselt und nur anfügbar; aufgeräumt wird wöchentlich, gelöschte Konten sind deshalb spätestens nach 37 Tagen aus allen Backups entfernt [JURISTISCH ZU PRÜFEN]
- Löschliste (nur pseudonyme Kennungen gelöschter Konten, dient dem erneuten Anwenden von Löschungen nach einem Restore): 60 Tage
- Fehlerberichte (GlitchTip, nur mit Einwilligung): 30 Tage
- Push-Tokens (Abschnitt 9): sofort bei Abmeldung, Ausschalten im Profil und Kontolöschung, sonst spätestens 60 Tage nach der letzten Nutzung der App
- Push-Warteschlange (nur IDs, Abschnitt 9): gesendete Einträge 7 Tage, nie versendete höchstens 30 Tage
- Anmelde-Sitzungen und Audit-Log der Anmeldung (GoTrue): TODO Dauer und Inhalt (u. a. IP-Adressen) klären [JURISTISCH ZU PRÜFEN]
- Wartende Fahrten mit optionalem Namen eines Mitfahrers ohne Konto (Abschnitt 4): bis zur Übernahme (Name sofort gelöscht), höchstens 30 Tage; übernommene Zeilen ohne Namen 24 Stunden; in Backups bis zu 37 Tage [JURISTISCH ZU PRÜFEN]
- Konto- und Fahrtdaten: bis zur Löschung des Kontos bzw. nach Pseudonymisierung unbefristet
- Zwischenstand einer gemessenen Fahrt (nur auf dem Gerät, Abschnitt 4b): bis zum Eintragen/Verwerfen, in der Regel nach 24 Stunden, spätestens beim nächsten Öffnen der App, je Fahrt (bis zu drei wartende Fahrten) [JURISTISCH ZU PRÜFEN]
- Name der zuletzt genutzten Gruppe für das Auto-Display (nur auf dem Gerät, Abschnitt 4b): bis zum Ausschalten des Schalters „Gruppenname im Auto“ (sofort), Verlassen der Gruppe, Abmelden bzw. Löschen des Kontos, spätestens beim nächsten Öffnen der App [JURISTISCH ZU PRÜFEN]
- Tarif (Faktoren, Nachtzeiten, Zeitzone) und ID der zuletzt genutzten Gruppe für den Start am Auto-Display (nur auf dem Gerät, Abschnitt 4b): bis zum Verlassen der Gruppe, Abmelden bzw. Löschen des Kontos, spätestens beim nächsten Öffnen der App [JURISTISCH ZU PRÜFEN]
7. Hosting und Backups
TODO: Hetzner Online GmbH, Serverstandort Deutschland; Auftragsverarbeitungsvertrag (Art. 28 DSGVO). Verschlüsselte Offsite-Backups auf einer Hetzner Storage Box in Helsinki (Finnland, EU), clientseitig verschlüsselt. Löschungen wirken in Backups erst nach Ablauf der Aufbewahrung.
8. Routenberechnung
TODO: eigener OSRM-Server (keine Weitergabe an Dritte). Google Directions ist standardmäßig aus und wird nur nach ausdrücklicher Einwilligung genutzt (Drittland); die Einwilligung ist jederzeit widerrufbar (Einstellungen in der App) [JURISTISCH ZU PRÜFEN].
[JURISTISCH ZU PRÜFEN] Textentwurf (gemessene Fahrten): Für die Direktstrecke einer Mitnahme sendet die App Start- und Zielpunkt verschlüsselt an unseren eigenen Routing-Server (routing.kmkarma.com, Hetzner, Auftragsverarbeitung). Koordinaten, Pfade und IP-Adressen werden dort nicht protokolliert; technisch bedingt sieht der Server die IP-Adresse kurzzeitig (Rate-Limiting im Arbeitsspeicher). Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO.
9. Push-Benachrichtigungen
Wenn du Benachrichtigungen erlaubst, senden wir dir Hinweise, z. B. wenn ein Eintrag auf deine Bestätigung wartet. Die Nachricht enthält keine Namen, Strecken oder Kilometer, nur einen allgemeinen Hinweis sowie technische IDs des Eintrags zum Öffnen in der App. Verarbeitet werden ein Push-Token deines Geräts, die Plattform (iOS/Android) und der Nachrichteninhalt. Empfänger: Google (Firebase Cloud Messaging), bei iOS zusätzlich Apple (APNs); dabei kann eine Übermittlung in die USA erfolgen [JURISTISCH ZU PRÜFEN: DPF/SCC, AVV mit Google]. Google erhält technisch bedingt zusätzlich eine Firebase-Installations-ID. Rechtsgrundlage: Einwilligung (Art. 6 Abs. 1 lit. a DSGVO) [JURISTISCH ZU PRÜFEN]. Speicherdauer: Das Token löschen wir bei Abmeldung, beim Ausschalten im Profil und bei Kontolöschung sofort, bei ungültigem Token automatisch, sonst spätestens 60 Tage nach der letzten Nutzung der App. Widerruf: jederzeit im Profil oder in den Systemeinstellungen. Ohne Einwilligung funktioniert die App weiter.
10. Server-Logs, Zertifikate und Verfügbarkeitsüberwachung
TODO: Proxy-Logs wie oben (ohne IP, Pfad, Query). Let’s Encrypt (ISRG) stellt TLS-Zertifikate aus; dabei werden Domainnamen und die Server-IP übermittelt, keine Nutzerdaten. Uptime-Monitoring prüft nur öffentliche Adressen des Dienstes (keine Nutzerdaten); ggf. externer Monitoring-Anbieter nennen.
11. Crash-Reporting (freiwillig)
TODO: GlitchTip, selbst gehostet, nur nach Einwilligung (Opt-in), ohne personenbezogene Payload; Aufbewahrung 30 Tage; Widerruf jederzeit in der App möglich. IP-Speicherung serverseitig vor Veröffentlichung prüfen und ggf. ausschließen.
12. Deine Rechte
TODO: Auskunft (Datenexport im Profil), Berichtigung, Löschung, Einschränkung, Widerspruch (Art. 21 DSGVO, insbesondere gegen Verarbeitung nach Art. 6 Abs. 1 lit. f), Datenübertragbarkeit, Widerruf erteilter Einwilligungen, Beschwerderecht bei einer Aufsichtsbehörde. Zuständige Aufsichtsbehörde: TODO (abhängig vom Sitz des Verantwortlichen) [JURISTISCH ZU PRÜFEN].
[JURISTISCH ZU PRÜFEN] Textentwurf (Betroffene ohne Konto): Wenn dein Vor- oder Spitzname als Mitfahrer ohne Konto in einer wartenden Fahrt steht (Abschnitt 4), kannst du Auskunft verlangen sowie Berichtigung, Löschung und Widerspruch (Art. 15 bis 17 und 21 DSGVO). Schreib an [Kontakt: TODO Platzhalter] und nenne die Gruppe oder den Fahrer; wir löschen den Namen. Beschwerderecht bei der Aufsichtsbehörde wie oben.
13. Stand dieser Erklärung
TODO: Versionsnummer und Datum; Änderungshistorie.