Entwurf. Diese Fassung enthält noch unausgefüllte Platzhalter und ist rechtlich nicht geprüft. Sie darf so nicht als Datenschutzerklärung verwendet werden.

Datenschutzerklärung ddmdg

Stand: «TT.MM.JJJJ»


1. Verantwortlicher

«Vor- und Nachname»
«Straße und Hausnummer»
«PLZ Ort»
E-Mail: «datenschutz@deine-domain»

Ein Datenschutzbeauftragter ist nicht bestellt; die Voraussetzungen des § 38 BDSG liegen nicht vor. (Bitte prüfen, falls du das Angebot geschäftlich betreibst.)

2. Worum es geht

ddmdg ist ein persönliches Notizwerkzeug für Medikamenteneinnahmen, Schmerzwerte und Aktivitäten — als Web-App und als Android-App samt Wear-OS-Begleiter. Es ist kein Medizinprodukt; die Tageslimits sind selbstgesetzte Werte und keine Dosierungsempfehlung.

Die Android-App gibt es in zwei Fassungen, die sich in genau einem Punkt unterscheiden: darin, wie eine Erinnerung auf dein Telefon kommt.

  • ddmdg-play stellt über Firebase Cloud Messaging zu. Google erfährt dabei Zeitpunkt und Zielgerät, nicht aber den Inhalt — Abschnitt 6.1.
  • ddmdg-foss stellt über UnifiedPush zu, über einen Push-Server deiner Wahl. Google ist daran nicht beteiligt, und der Push-Server sieht nur verschlüsselten Inhalt — Abschnitt 6.2.

Welche Fassung installiert ist, steht in der App unter Über. Ansonsten sind beide identisch: gleicher Funktionsumfang, gleiche erfassten Daten, gleiche Verarbeitung auf diesem Server.

Die Angaben, die du erfasst, sind Gesundheitsdaten im Sinne von Art. 9 Abs. 1 DSGVO. Sie werden ausschließlich verarbeitet, um dir die App bereitzustellen — nicht ausgewertet, nicht profiliert, nicht weitergegeben.

3. Rechtsgrundlage

Verarbeitung Grundlage
Konto, Anmeldung, Speicherung deiner Einträge Art. 6 Abs. 1 lit. b DSGVO (Vertrag) in Verbindung mit Art. 9 Abs. 2 lit. a DSGVO (deine ausdrückliche Einwilligung in die Verarbeitung von Gesundheitsdaten)
Benachrichtigungen (Push) Art. 6 Abs. 1 lit. b DSGVO — du aktivierst sie selbst, und ohne sie fehlt der Kernzweck
Server- und Fehlerprotokolle Art. 6 Abs. 1 lit. f DSGVO (Betriebssicherheit)

Die Einwilligung nach Art. 9 gibst du ausdrücklich bei der Registrierung — über ein eigenes, nicht vorausgewähltes Kontrollkästchen; der Zeitpunkt wird als Nachweis gespeichert (Art. 7 Abs. 1). Du kannst sie jederzeit widerrufen, indem du dein Konto löschst (Abschnitt 8); die bis dahin erfolgte Verarbeitung bleibt rechtmäßig.

4. Welche Daten verarbeitet werden

4.1 Konto

  • E-Mail-Adresse — als Anmeldename und für das Zurücksetzen des Passworts.
  • Passwort — nie im Klartext gespeichert, sondern als Argon2-Hash.
  • Zeitzone — damit „08:00" deine acht Uhr ist.
  • Einladungscode bei der Registrierung — wird geprüft, nicht gespeichert.

4.2 Deine Einträge (Gesundheitsdaten)

  • Wirkstoffe und selbstgesetzte Tageslimits
  • Medikamente mit Wirkstoffanteilen, Einheiten, Mindestabständen und Einnahmeplänen
  • Einnahmen mit Zeitpunkt, Menge und optionaler Notiz
  • Schmerzwerte 0–10 mit Zeitpunkt und optionaler Notiz
  • Aktivitäten und Aktivitätseinträge mit Zeitpunkt und Dauer
  • Timer und deren Fälligkeiten samt Zustellvermerken
  • Schlafdaten — je Nacht Beginn und Ende des Schlafs, der Kalendertag des Aufwachens und die Dauer, dazu — soweit die Quelle sie liefert — die Schlafphasen (wach, leicht, tief, REM), eine Schlafbewertung (0–100), die Quelle und eine optionale Notiz. Nur, wenn du „Schlaf erfassen und auswerten" in den Einstellungen einschaltest; standardmässig ist es aus, und dann fragt die App Health Connect gar nicht erst.
  • Bewegungsdaten — Schrittzahl und mittlere Herzfrequenz je Zeitabschnitt, dazu Anfang und Ende des Abschnitts und die Quelle. Nur, wenn du das „Bewegungsprofil" in den Einstellungen einschaltest; standardmässig ist es aus, und dann fragt die App deine Uhr bzw. Health Connect gar nicht erst.

Die Schlafdaten trägst du entweder von Hand ein, oder die Android-App liest sie aus Health Connect — und damit aus allem, was dorthin schreibt, etwa Samsung Health oder Garmin Connect. Sie beschreiben deine Nächte und damit mehr als das, was du selbst einträgst; deshalb ist es ein eigener Schalter, und deshalb ist er standardmässig aus. Ausschalten blendet den Bereich nur aus; löschen kannst du die gespeicherten Nächte jederzeit mit dem Knopf daneben („Schlafdaten löschen"), unabhängig davon, ob du den Bereich weiter nutzt. Mit dem Konto verschwinden sie ohnehin (Abschnitt 8).

Das Bewegungsprofil dient einem Zweck: die eigenen Beschwerden gegen das eigene Bewegungsbild halten — war der Tag mit den Schmerzen der Tag mit den langen Sitzphasen. Die Daten fallen ganztägig an und beschreiben damit mehr als deine Einträge; deshalb ist es ein eigener Schalter und nicht derselbe wie für die Schlafdaten, und deshalb ist er standardmässig aus. Ausschalten blendet den Bereich nur aus; löschen kannst du die gesammelten Werte jederzeit mit dem Knopf daneben („Bewegungsdaten löschen"), unabhängig davon, ob du den Bereich weiter nutzt. Mit dem Konto verschwinden sie ohnehin (Abschnitt 8).

4.3 Geräte für Benachrichtigungen

  • Web-App im Browser: die Push-Adresse (Endpoint) deines Browsers und die zugehörigen öffentlichen Schlüssel.
  • Android-App, Fassung play: das FCM-Token deines Geräts, dazu die Plattform („android") und die App-Version.
  • Android-App, Fassung foss: die Push-Adresse (Endpoint), die dein Verteiler dir zugeteilt hat, und die zugehörigen öffentlichen Schlüssel — technisch derselbe Eintrag wie beim Browser. Die Adresse enthält den Push-Server, den du eingestellt hast, und eine zufällige Themenkennung. Kein FCM-Token: diese Fassung enthält kein Firebase.

Die privaten Schlüssel, mit denen die Nachrichten entschlüsselt werden, entstehen auf deinem Gerät und verlassen es nicht. Dieser Server bekommt nur die öffentlichen Teile.

4.4 Protokolle

Der Server schreibt technische Protokolle: Zeitpunkt, aufgerufener Pfad, Statuscode, IP-Adresse. In den Anwendungsprotokollen stehen interne Kennungen (Konto-Id, Medikamenten-Id), keine Medikamentennamen und keine E-Mail-Adressen — das ist eine bewusste Regel des Projekts.

Belege: app/models/, app/auth/password.py (Argon2), app/services/reminder_service.py.

5. Was nicht passiert

  • Keine Werbung, kein Tracking, keine Analyse. Die App bindet weder Analyse-Werkzeuge noch Werbenetzwerke ein — auch kein Firebase Analytics; aus dem Firebase-Baukasten wird in der Fassung play ausschließlich der Nachrichtenversand benutzt. Die Fassung foss enthält gar kein Firebase: weder Bibliothek noch Kennungen sind im Paket.
  • Keine Weitergabe oder Verkauf deiner Daten an Dritte.
  • Kein Profiling, keine automatisierte Entscheidungsfindung im Sinne von Art. 22 DSGVO.
  • Keine Cookies zu Analyse- oder Werbezwecken. Es gibt genau ein Cookie, siehe Abschnitt 7.

6. Empfänger und Drittlandtransfer

6.1 Google (Firebase Cloud Messaging) — nur Android-App, Fassung play

Damit eine Erinnerung dein Telefon auch im Energiesparmodus erreicht, läuft die Zustellung über Firebase Cloud Messaging (Google Ireland Limited bzw. Google LLC, USA). Wer die Fassung foss benutzt, ist von diesem Abschnitt nicht betroffen — dort ist Google an nichts beteiligt.

Was Google dabei sieht: dass zu einem bestimmten Zeitpunkt an ein bestimmtes Gerät eine Nachricht geht, dazu inhaltslose Kennungen (UUIDs und Pfade). Was Google nicht sieht: Medikamentennamen, Dosierungen, Schmerzwerte. Titel und Text werden vor dem Versand durch neutrale Platzhalter ersetzt; den echten Text lädt die App anschließend direkt bei diesem Server nach.

Übermittlung in die USA auf Grundlage der Standardvertragsklauseln und des EU-US Data Privacy Framework.

Beleg: app/services/fcm_service.py, Funktion strip_content — Standard ist FCM_CONTENTLESS=true.

6.2 Verteiler und Push-Server (UnifiedPush) — nur Android-App, Fassung foss

Diese Fassung kommt ohne Google aus. Die Zustellung läuft über UnifiedPush: Auf deinem Gerät liegt ein Verteiler — eine eigene App deiner Wahl, verbreitet ist ntfy —, die die Verbindung zu einem Push-Server hält. Welchen Server sie benutzt, stellst du in der Verteiler-App selbst ein; für diesen Dienst vorgesehen ist «Adresse des Push-Servers».

Was der Push-Server sieht: dass zu einem Zeitpunkt eine Nachricht an ein bestimmtes Thema geht, und wie groß sie ist. Was er nicht sieht: den Inhalt. Die Nutzlast ist nach RFC 8291 verschlüsselt — dieselbe Ende-zu-Ende-Verschlüsselung wie beim Browser-Push (Abschnitt 6.3). Anders als bei Firebase müssen Titel und Text deshalb nicht durch Platzhalter ersetzt werden: sie stehen im Chiffrat, das allein dein Gerät öffnen kann.

Der Verteiler ist eine fremde App, und der Push-Server ist unter Umständen ein fremder Dienst. Für beide gilt die Datenschutzerklärung ihres jeweiligen Anbieters und nicht diese. Ein Drittlandtransfer findet nur statt, wenn der von dir eingestellte Push-Server außerhalb der EU betrieben wird — das entscheidest du mit der Serveradresse in der Verteiler-App.

Was der Verteiler seinerseits sieht: dieselben verschlüsselten Nachrichten, und zusätzlich, dass sie zu ddmdg gehören — er reicht sie an diese App weiter. Entschlüsselt werden sie erst in ddmdg selbst.

Belege: android/app/src/foss/.../DdmdgPushService.kt (verwirft alles, was nicht entschlüsselt ankommt), app/models/push_subscription.py, app/services/push_service.py — derselbe Versandweg wie beim Browser-Push.

6.3 Push-Dienst deines Browsers — nur Web-App

Bei Benachrichtigungen im Browser läuft die Zustellung über den Push-Dienst des jeweiligen Herstellers (je nach Browser Google, Mozilla oder Apple). Die Nutzlast ist dabei Ende-zu-Ende verschlüsselt (Web Push mit VAPID); der Dienst sieht ausschließlich Chiffrat sowie Zeitpunkt und Zieladresse.

6.4 E-Mail-Versand

Für „Passwort vergessen" wird eine E-Mail versandt über: «Mail-Anbieter — z. B. eigener Mailserver oder Anbieter X». Dabei wird deine E-Mail-Adresse an diesen Anbieter übermittelt. Andere E-Mails verschickt ddmdg nicht.

6.5 Hosting

Anwendung und Datenbank laufen bei: «Anbieter und Standort — z. B. eigener Server in Deutschland». «Nur falls ein Anbieter beteiligt ist: Mit ihm besteht ein Auftragsverarbeitungsvertrag nach Art. 28 DSGVO.»

7. Cookies und lokale Speicherung

Ein einziges Cookie: die Anmeldesitzung. Es ist HttpOnly, Secure und SameSite=Lax, läuft nach «30» Tagen ab und dient allein dazu, dich angemeldet zu halten. Ein Einwilligungsbanner ist dafür nicht nötig — das Cookie ist für den von dir angeforderten Dienst unbedingt erforderlich (§ 25 Abs. 2 TDDDG).

Auf deinem Gerät speichert die Web-App zusätzlich:

  • einen Zwischenspeicher für Programmdateien und zuletzt besuchte Seiten, damit sie offline nutzbar bleibt,
  • noch nicht übertragene Einträge, wenn du sie ohne Netz erfasst hast.

⚠️ Hinweis für geteilte Geräte: Der Offline-Zwischenspeicher enthält zuletzt angezeigte Seiten mitsamt deren Inhalten. Auf einem geteilten Gerät kann eine solche Seite nach dem Abmelden noch aus dem Zwischenspeicher angezeigt werden. Wer ein Gerät mit anderen teilt, sollte den Browserverlauf und die Website-Daten löschen. (Bewusste Entscheidung — die Offline-Lesbarkeit der zuletzt gesehenen Seite bleibt; begründet in docs/review-2026-08-09.md, Fund 4, und docs/decisions/pwa.md, Punkt 9.)

Die Android-App speichert lokal deinen Anmeldetoken, die Serveradresse und einen Auszug der nächsten Fälligkeiten für Kachel und Uhr. In der Fassung foss kommen der gewählte Verteiler und die von ihm zugeteilte Push-Adresse dazu.

8. Löschung und Speicherdauer

Du löschst dein Konto selbst, und zwar sofort und vollständig: Einstellungen → „Konto endgültig löschen", bestätigt mit deinem Passwort. Dabei verschwinden Konto, sämtliche Einnahmen, Schmerzwerte, Aktivitäten, Schlafdaten, Bewegungsdaten, Medikamente, Wirkstoffe, Timer und alle Geräteanmeldungen. Es gibt keine Frist, keinen Papierkorb und keine Wiederherstellung — auch nicht auf Nachfrage.

Die Anleitung dazu steht öffentlich unter «https://deine-domain»/ui/account-deletion.

Solange du dein Konto behältst, bleiben deine Einträge gespeichert — es gibt keine automatische Löschung nach Zeitablauf, denn eine Historie ist der Zweck der App. Vor dem Löschen kannst du sie unter „Einnahmen" als PDF oder CSV herunterladen.

Server- und Fehlerprotokolle werden nach «7» Tagen überschrieben. «Zahl an die tatsächliche Docker-/Systemd-Konfiguration anpassen — im Repo ist sie nicht festgelegt.»

9. Deine Rechte

Dir stehen zu: Auskunft (Art. 15), Berichtigung (Art. 16), Löschung (Art. 17), Einschränkung (Art. 18), Datenübertragbarkeit (Art. 20) und Widerspruch (Art. 21). Eine einmal erteilte Einwilligung kannst du jederzeit mit Wirkung für die Zukunft widerrufen (Art. 7 Abs. 3).

Auskunft und Übertragbarkeit erfüllst du in der Regel schneller selbst: die Export-Funktion liefert deine vollständige Historie als PDF oder CSV. Für alles Übrige genügt eine E-Mail an «datenschutz@deine-domain».

Beschwerderecht: Du kannst dich bei einer Datenschutz-Aufsichtsbehörde beschweren, insbesondere bei der Behörde deines Wohnorts oder bei der für den Verantwortlichen zuständigen Behörde: «Aufsichtsbehörde des Bundeslands, in dem du gemeldet bist».

10. Sicherheit

Die Verbindung ist durchgehend mit TLS verschlüsselt. Passwörter liegen als Argon2-Hash vor und sind nicht rückrechenbar. Die Registrierung ist durch einen Einladungscode geschützt; Anmelde- und Zurücksetzen-Versuche sind ratenbegrenzt. Der Zugriff auf Server und Datenbank ist auf den oben genannten Verantwortlichen beschränkt.

11. Eigener Server (Selbsthosting)

Die Android-App kann auf ein selbst betriebenes Backend zeigen. Trägst du unter „Anderer Server" eine andere Adresse ein, gilt diese Erklärung nicht — verantwortlich ist dann, wer diesen Server betreibt. Deine Daten erreichen die hier beschriebenen Systeme in diesem Fall nicht.

12. Änderungen

Diese Erklärung wird angepasst, wenn sich die Verarbeitung ändert. Die jeweils gültige Fassung steht unter «https://deine-domain»/ui/datenschutz.

Zur Anmeldung · Konto löschen