Policy version 1.4.40
Datenschutzerklärung / Privacy Policy
Last updated: 2026-05-18 · Stand: 2026-05-18
Diese Erklärung ist deutsch-englisch geführt. Jeder Abschnitt beginnt mit dem deutschen Text; die englische Übersetzung steht eingeklappt direkt darunter.
Inhalt / Contents
1. Overview
Deutsch — Überblick
HealthLog ist eine quelloffene, selbst-hostbare Anwendung zur persönlichen Gesundheitsprotokollierung. Der Quellcode wird unter der GNU Affero General Public License v3.0 auf github.com/MBombeck/HealthLog veröffentlicht. Diese Erklärung beschreibt, wie die Instanz, über die Sie diese Seite abrufen, und die zugehörige iOS-Anwendung HealthLog for iOS (Bundle-ID dev.healthlog.app) personenbezogene Daten verarbeiten.
Verantwortlicher im Sinne von Art. 4 Nr. 7 DSGVO ist der Betreiber dieser Instanz (Privatperson mit Sitz in Deutschland). Eigenständig betriebene, selbst-gehostete Instanzen unterliegen der Datenschutzerklärung ihres jeweiligen Betreibers; dieses Dokument gilt ausschließlich für diese Instanz.
Für Fragen oder Datenschutz-Anfragen siehe Abschnitt 11 (Kontakt).
English translation
HealthLog is an open-source, self-hostable personal-health- tracking application. Source code is published at github.com/MBombeck/HealthLog under the GNU Affero General Public License v3.0. This policy describes how the instance serving this page and the companion iOS application HealthLog for iOS (bundle identifier dev.healthlog.app) handle personal data.
The controller under Art. 4 (7) GDPR is the operator of this instance (an individual based in Germany). Self- hosted deployments controlled by a different operator are governed by that operator's own privacy policy; this document applies only to this instance.
For questions or data-subject requests, see section 11 (Contact).
2. Data we collect
Deutsch — Erhobene Daten
HealthLog speichert Beobachtungen, die der Nutzer selbst erfasst, sowie Gesundheitssignale, die der Nutzer ausdrücklich über eine Integration verbunden hat. Die folgenden Kategorien sind für den veröffentlichten Funktionsumfang abschließend.
2.1 Konto und Authentifizierung
- E-Mail-Adresse und gewählter Benutzername.
- Passwort-Hash (Argon2id; das Klartext-Passwort wird zu keinem Zeitpunkt gespeichert oder protokolliert).
- Optional: WebAuthn- / Passkey-Anmeldedaten (öffentlicher Schlüssel, Credential-ID, Signaturzähler).
- Sitzungskennungen (HTTP-only-Cookie im Web; opake API- Token unter iOS, gespeichert im Geräte-Keychain).
- Profil-Metadaten: Sprache, Zeitzone, Geburtsdatum (optional), biologisches Geschlecht (optional), Körper- größe (optional) — zur Berechnung altersgerechter Zielbereiche und des BMI.
2.2 Manuell erfasste Gesundheitsdaten
Jeder in den App-Formularen eingegebene Wert, einschließ- lich Zeitstempel, optionaler Notiz und Metrik-Typ. Die vollständige Aufzählung der unterstützten Metriken steht im OpenAPI-Schema; die nutzerrelevante Teilmenge umfasst Körpergewicht, Körperfett, Körpertemperatur, BMI (abgeleitet), Blutdruck (systolisch / diastolisch) und Puls (gepaarte Messung), Blutzucker mit Kontext (nüchtern / postprandial / zufällig / vor dem Schlafengehen) und wählbarer Einheit (mg/dL oder mmol/L), Ruhepuls, HRV (SDNN), VO₂max, Sauerstoffsättigung, Schlafdauer inkl. Pro- Stadien-Aufschlüsselung (Wach / REM / Core / Tief), Schritte, gelaufene oder gerannte Distanz, Aktive-Energie, gestiegene Stockwerke, Lärmpegel (Umgebung und Kopfhörer), Tageslicht-Zeit, Stimmung (Skala 1–5) mit optionaler Freitext-Notiz sowie Workouts (Sportart, Dauer, Distanz und optional GPS-Route, ausschließlich wenn der Nutzer eine Route anhängt).
2.3 Apple Health (iOS-Anwendung) — Datenfluss
Wenn der Nutzer der iOS-Anwendung Lesezugriff auf Apple HealthKit erteilt, liest HealthLog Stichproben der unten aufgeführten Identifier. HealthKit-Daten verbleiben auf dem Gerät des Nutzers und in dessen iCloud-gestütztem Health-Speicher; die iOS-Anwendung überträgt die relevant- en Stichproben über HTTPS (TLS 1.3, Zertifikat-Pinning) an den HealthLog-Server (Endpunkt POST /api/measurements), damit die Web-Oberfläche dieselben Verläufe darstellen kann wie das iPhone. Es findet keine Übertragung an Dritte statt; die Daten werden ausschließlich auf der unter Abschnitt 5 beschriebenen Infrastruktur in Deutschland gespeichert.
HKQuantityTypeIdentifier:
bodyMassbodyFatPercentagebodyTemperaturebloodPressureSystolicbloodPressureDiastolicbloodGlucoseoxygenSaturationheartRaterestingHeartRateheartRateVariabilitySDNNvo2MaxstepCountactiveEnergyBurnedflightsClimbeddistanceWalkingRunningenvironmentalAudioExposureheadphoneAudioExposuretimeInDaylight(iOS 17+)
HKCategoryTypeIdentifier:
sleepAnalysis— mit voller Pro-Stadien-Granularität (Awake, REM, Core, Deep). Die Stadien werden serverseitig als separate Zeilen abgelegt, damit das Diagramm sie stapeln kann.
Schreibzugriff wird für eine Teilmenge angefordert (Körpermasse, Blutdruck systolisch / diastolisch, Blut- zucker), damit manuelle Einträge in der iOS-App zurück nach HealthKit fließen können. Der Nutzer steuert beide Richtungen über die Berechtigungsoberfläche der iOS- Health-App und kann jederzeit widerrufen.
2.4 Withings-Synchronisation (optional)
Verbindet der Nutzer ein Withings-Konto, speichert HealthLog die OAuth-Refresh- und -Access-Token (spalten- weise verschlüsselt) sowie die Withings-Nutzerkennung. Webhook-getriebene Folgesynchronisierungen ziehen Körper- gewicht, Fettanteil, fettfreie Masse, Muskelmasse, Knochenmasse, Wassergehalt, Magermasse, Hydration, Blutdruck (systolisch / diastolisch) und Puls, Blut- zucker, Körpertemperatur (Basal- und Hauttemperatur), Aktivitätssummen (Schritte, Distanz, aktive Kalorien), Schlafsitzungen mit Pro-Stadien-Segmenten (Awake / Light / Deep / REM) sowie SpO₂ und Herzfrequenzvariabilität, soweit vorhanden.
2.5 Medikamente
- Aktive Verordnungen: Wirkstoffname, Stärke, Verabreich- ungsweg, Einnahmeplan, Behandlungsklasse (Standard oder GLP-1).
- Einnahme-Ereignisse: geplante Zeit, tatsächliche Zeit, Status (eingenommen, ausgelassen, verpasst).
- Bei GLP-1-Therapien: Dosis-Änderungs-Historie, Injektions- Ereignisse mit optionaler Injektionsstelle und Pen- Kennung, Nebenwirkungs-Protokolle entlang einer fixen Taxonomie, Pen-und-Ampullen-Inventar mit 30-Tage-In- Use-Uhr.
2.6 KI-Coach und Insights — Off-Device-Transit
Aktiviert der Nutzer die KI-Coach-Oberfläche und konfiguriert einen Sprachmodell-Anbieter, übermittelt HealthLog auf Anforderung ein Snapshot-Bündel an diesen Anbieter. Das Bündel enthält Gesundheitskontext aus den oben genannten Daten (Aggregate, jüngste Beobachtungen, Zielbereiche, optionaler Medikamentenkontext) und niemals rohe HealthKit-Identifier oder rohe Sample-IDs; der Server normalisiert HK-Stichproben vorab in die interne Metrik-Taxonomie. Die Übertragung erfolgt verschlüsselt (TLS 1.3); standardmäßig ist die KI-Coach- Funktion deaktiviert und wird nur nach ausdrücklicher Nutzereinwilligung pro Anbieter aktiviert (siehe Einwilli- gungsnachweis unter Abschnitt 2.7). HealthLog speichert keinen langlebigen Gesprächszustand über den letzten Thread hinaus. Abschnitt 4 listet die in Frage kommenden Anbieter (Anthropic, OpenAI) auf.
2.7 Einwilligungsnachweis (Consent Receipt)
Jede Einwilligung in die KI-Übermittlung — sowohl die Aktivierung pro Anbieter als auch Änderungen am Datentiefe-Schalter — wird mit Zeitstempel, Anbieter, Versionskennung des Einwilligungstextes und Hash des Snapshot-Schemas als „Consent Receipt“ persistiert. Der Endpunkt zum Abruf ist GET /api/account/consents; die Speicherdauer der Belege beträgt fünf Jahre, danach werden sie automatisch gelöscht. Ein Widerruf wird als eigenes Receipt mit umgekehrter Polarität abgelegt; der Anbieter erhält ab diesem Zeitpunkt keine Snapshot-Bündel mehr.
2.8 Geräte- und Integrations-Metadaten, Push
- Geräte-Kennung (zufällige UUID, clientseitig erzeugt und im iOS-Keychain gespeichert), übermittelt als
X-Device-Id-Header — für Mehrgeräte-Synchronisation und Miss- brauchsschutz. - Apple-Push-Notification-Service-(APNs)-Geräte-Token und Umgebung (sandbox / production), ausschließlich bei aktivierten Push-Benachrichtigungen.
- Telegram-Chat-Kennung — nur, wenn der Nutzer die optionale Telegram-Bot-Benachrichtigung verbunden hat.
2.9 Sicherheits- und Audit-Logs
- Authentifizierungs-Ereignisse (Login-Erfolg/-Fehlschlag, Passkey-Registrierung, Passwort-Wechsel, Sitzungs- Widerruf) — 90 Tage zur forensischen Aufklärung.
- Server-Zugriffsprotokolle (Zeit, Pfad, Statuscode, User- Agent, IP) — 14 Tage zur Missbrauchsbekämpfung und Fehlersuche.
- Fehlgeschlagene APNs-Zustellungen — 30 Tage zur Wartung des Push-Pfads, danach automatische Löschung.
2.10 Nicht erhobene Daten
- Keine Werbe-Identifier, Fingerprints oder anwendungs- übergreifenden Tracker.
- Keine Zahlungsdaten (es gibt keinen Bezahltarif).
- Keine fortlaufende Hintergrund-Standortermittlung — GPS-Routen nur, wenn der Nutzer sie einem Workout ausdrücklich beifügt.
- Keine Social-Network-Kennungen und kein Kontaktlisten- Abgleich.
- Keine clientseitigen Produkt-Analytics; die Instanz liefert kein Analytics-SDK aus.
English translation
HealthLog is designed to record observations the user enters themselves and to consume health signals the user has explicitly connected through a third-party integration. The categories below are exhaustive for the released feature set.
2.1 Account and authentication
- Email address and chosen username.
- Password hash (Argon2id; the plain-text password is never stored or logged).
- Optional WebAuthn / passkey credentials (public key, credential ID, sign counter).
- Session identifiers (HTTP-only cookie on the web; opaque API tokens on iOS, stored in the device Keychain).
- Profile metadata: locale, timezone, date of birth (optional), biological sex (optional), height (optional) — used to compute age-adjusted target ranges and BMI.
2.2 Manually entered health data
Any value entered through the in-app forms, including timestamp, optional note, and metric type: body weight, body-fat percentage, body temperature, BMI (derived), blood pressure (systolic / diastolic) and pulse rate as paired readings, blood glucose with context (fasting, postprandial, random, bedtime) and configurable unit (mg/dL or mmol/L), resting heart rate, heart-rate variability (SDNN), VO₂ max, oxygen saturation, sleep duration with per-stage breakdown (Awake / REM / Core / Deep), step count, distance walked or run, active-energy burned, flights climbed, environmental and headphone audio-exposure levels, time in daylight, mood (1-5 scale) with optional free-text note, and workout sessions (activity type, duration, distance, and an optional GPS route attached manually by the user).
2.3 Apple Health (iOS application) — data flow
When the user grants the iOS application read access to Apple HealthKit, HealthLog reads samples for the identifiers listed below. HealthKit data remains on the user's device and the user's iCloud-backed Health store; the iOS application copies relevant samples to the HealthLog server over HTTPS (TLS 1.3, certificate pinning) via POST /api/measurements so the web surface can render the same trends as the iPhone. No third-party transit; data lives on the German-located infrastructure described in section 5.
HKQuantityTypeIdentifier:
bodyMassbodyFatPercentagebodyTemperaturebloodPressureSystolicbloodPressureDiastolicbloodGlucoseoxygenSaturationheartRaterestingHeartRateheartRateVariabilitySDNNvo2MaxstepCountactiveEnergyBurnedflightsClimbeddistanceWalkingRunningenvironmentalAudioExposureheadphoneAudioExposuretimeInDaylight(iOS 17+)
HKCategoryTypeIdentifier:
sleepAnalysis— with full per-stage granularity (Awake, REM, Core, Deep). Stages are stored server-side as separate rows so the chart can stack them.
Write access is requested for a subset (body mass, blood- pressure systolic / diastolic, blood glucose) so that manual entries made inside the iOS app can flow back into HealthKit. The user controls both directions in the iOS Health app's permission surface and may revoke at any time.
2.4 Withings sync (optional)
When the user connects a Withings account, HealthLog stores the OAuth refresh and access tokens (encrypted at the column level) and the user's Withings identifier. Subsequent webhook-driven syncs pull body weight, fat ratio, fat-free mass, muscle mass, bone mass, water mass, lean mass, hydration, blood pressure (systolic / diastolic) and pulse, blood glucose readings, body temperature (basal and skin), activity totals (steps, distance, active calories), sleep sessions with per-stage segments (Awake / Light / Deep / REM), and SpO₂ + HRV where available.
2.5 Medications
- Active prescriptions: drug name, strength, route, schedule, treatment-class flag (standard or GLP-1).
- Intake events: scheduled time, actual time, status (taken, skipped, missed).
- For GLP-1 treatments: dose-change history, injection events with optional injection site and pen identifier, side-effect logs against a fixed taxonomy, pen-and-vial inventory with a 30-day in-use clock.
2.6 AI Coach and Insights — off-device transit
When the user enables the AI Coach surface and configures a language-model provider, HealthLog sends a snapshot bundle to that provider on demand. The bundle contains health context derived from the data above (aggregates, recent observations, target ranges, optional medication context) and never includes raw HealthKit identifiers or raw sample IDs; the server normalises HK samples into the internal metric taxonomy first. Transit is encrypted (TLS 1.3). The AI Coach is off by default and is enabled per- provider only after explicit user consent (see consent receipt in section 2.7). HealthLog does not retain long-term conversation state beyond the most recent thread. Section 4 enumerates the eligible providers (Anthropic, OpenAI).
2.7 Consent receipt persistence
Every consent to AI transit — both per-provider activation and changes to the data-depth toggle — is persisted as a “consent receipt” with timestamp, provider, consent-text version, and a hash of the snapshot schema. The retrieval endpoint is GET /api/account/consents; receipts are retained for five years and then deleted automatically. A withdrawal is recorded as a separate reverse-polarity receipt; from that moment the provider receives no further snapshot bundles.
2.8 Device and integration metadata, push
- A device identifier (random UUID generated client- side, stored in the iOS Keychain) sent as the
X-Device-Idrequest header — used for multi-device sync and abuse prevention. - Apple Push Notification service (APNs) device token and environment flag (sandbox / production), recorded only when the user enables push notifications.
- Telegram chat identifier — only when the user has explicitly connected the optional Telegram-bot notifier.
2.9 Security and audit
- Authentication events (login success / failure, passkey registration, password change, session revocation) — retained for 90 days for security forensics.
- Server access logs (timestamp, request path, status code, user-agent, IP address) — 14 days for abuse- rate-limiting and debugging.
- Failed APNs deliveries — 30 days to support push- pipeline maintenance, then auto-deleted.
2.10 Data we do not collect
- No third-party advertising identifiers, fingerprints, or cross-app tracking.
- No payment information (the application has no paid tier).
- No precise background location (workouts only carry GPS when the user attaches a route).
- No social-network identifiers or contact-list scrapes.
- No third-party product analytics. The instance does not ship a client-side analytics SDK.
3. Why we collect each category
Deutsch — Zwecke der Verarbeitung
- Authentifizierungsdaten — Identifikation des Nutzers und Sicherung der Sitzung. Rechtsgrundlage: Art. 6 Abs. 1 lit. b DSGVO (Vertrags- erfüllung).
- Gesundheitsdaten — Darstellung von Verläufen, Berechnung der Zielwerte- Treue, Erzeugung des Coach-Snapshots auf Abruf. Rechts- grundlage: Art. 9 Abs. 2 lit. a DSGVO (ausdrückliche Einwilligung für Daten besonderer Kategorien).
- Coach-Snapshots — Erzeugung personalisierter schriftlicher Rückmeldungen. Das Bündel wird nur für die Dauer der Anfrage an den konfigurierten KI-Anbieter übertragen.
- Geräte-Daten — Push-Benachrichtigungen, Missbrauchsschutz, Mehrgeräte- Sitzungshygiene.
- Audit-Logs — Sicherheits-Forensik und Rate-Limit. Rechtsgrundlage: Art. 6 Abs. 1 lit. f DSGVO (berechtigtes Interesse am sicheren Betrieb).
- Produkt-Analytics — werden nicht erhoben.
English translation
- Authentication data — identifying the user and securing the session. Legal basis: GDPR Art. 6 (1) (b) performance of contract.
- Health data — displaying trends, computing target adherence, generating the Coach context bundle when the user invokes it. Legal basis: GDPR Art. 9 (2) (a) explicit consent for special-category data.
- Coach context bundles — generating personalised written feedback. The bundle is transmitted to the configured AI provider for the duration of the request only.
- Device data — push notifications, abuse prevention, multi-device session hygiene.
- Audit logs — security-event tracing and rate-limiting. Legal basis: GDPR Art. 6 (1) (f) legitimate interest in operating the service securely.
- Product analytics — none collected.
4. Third-party sub-processors
Deutsch — Auftragsverarbeiter und Drittanbieter
Folgende Anbieter können personenbezogene Daten im Auftrag des Betreibers verarbeiten. Die Liste ist für den veröffentlichten Funktionsumfang abschließend. Anbieter werden nur für die Funktionen eingebunden, die der Nutzer ausdrücklich aktiviert hat. Für jede Übertragung in Drittländer (insbesondere USA) bestehen Standardvertrags- klauseln nach Art. 46 Abs. 2 lit. c DSGVO mit dem jeweiligen Anbieter.
Die englische Übersetzung enthält die detaillierte Auflistung pro Anbieter mit Rolle, übermittelten Daten, Speicherort und Link zur Datenschutzerklärung.
English translation
The following providers may process personal data on behalf of the HealthLog operator. The list is exhaustive for the released feature set; sub-processors are only engaged for the features the user has explicitly enabled. Each transfer to a third country (notably the United States) is covered by Standard Contractual Clauses under Art. 46 (2) (c) GDPR with the respective provider.
Anthropic, PBC
Rolle. KI-Coach- und Insights-Anbieter, wenn der Nutzer Anthropic Claude in den Einstellungen wählt.
Übermittelte Daten. Coach-Snapshot-Bündel (Gesundheits-Kontext) für die Dauer der Anfrage.
Speicherort. USA. Anthropic nennt ein 30-Tage-Speicherfenster zur Missbrauchsüberwachung.
Role. AI Coach and Insights provider when the user selects Anthropic Claude in settings.
Data transferred. Coach snapshot bundle (health-data context) for the duration of the request.
Storage. United States. Anthropic states a 30-day retention window for abuse-monitoring.
OpenAI, L.L.C.
Rolle. Alternativer KI-Coach- und Insights-Anbieter, wenn der Nutzer ein OpenAI-Modell wählt.
Übermittelte Daten. Coach-Snapshot-Bündel, gleiche Struktur wie bei Anthropic.
Speicherort. USA. Speicherdauer richtet sich nach der OpenAI-Enterprise-Policy zum konfigurierten API-Schlüssel.
Role. Alternative AI Coach and Insights provider when the user selects an OpenAI model in settings.
Data transferred. Coach snapshot bundle, same shape as the Anthropic variant.
Storage. United States. Retention governed by OpenAI's enterprise policy applicable to the configured API key.
Withings SAS
Rolle. Wearable-Synchronisation, wenn der Nutzer ein Withings-Konto verbindet.
Übermittelte Daten. OAuth-Refresh- und -Access-Token, Withings-Nutzerkennung, Webhook-Benachrichtigungen über neue Messungen.
Speicherort. Frankreich (Europäische Union).
Role. Wearable-device data sync when the user connects a Withings account.
Data transferred. OAuth refresh and access tokens, Withings user identifier, webhook notifications about new measurements.
Storage. France (European Union).
Apple, Inc.
Rolle. HealthKit (lokal auf dem Gerät) und Apple Push Notification service (APNs, bei aktivierten Benachrichtigungen).
Übermittelte Daten. HealthKit-Zugriff bleibt lokal. APNs empfängt Geräte-Token, Bundle-ID und Notification-Payload.
Speicherort. USA. HealthKit-Daten verbleiben auf dem Gerät des Nutzers und in dessen iCloud-verschlüsselten Backups unter der Apple-ID.
Role. HealthKit (on-device store; samples never leave the user's device or iCloud unless the user grants read access to HealthLog) and Apple Push Notification service (APNs, when notifications are enabled).
Data transferred. HealthKit access is local to the device. APNs receives a device token, the application bundle identifier, and the notification payload.
Storage. United States. Apple stores HealthKit data on the user's device and iCloud-encrypted backups under the user's Apple ID.
Telegram FZ-LLC
Rolle. Optionaler Benachrichtigungskanal, wenn der Nutzer die Telegram-Bot-Integration verbindet.
Übermittelte Daten. Telegram-Chat-Kennung und Notification-Payload.
Speicherort. Vereinigte Arabische Emirate / globale Telegram-Infrastruktur.
Role. Optional notification channel when the user enables the Telegram-bot integration.
Data transferred. Telegram chat identifier and the notification payload.
Storage. United Arab Emirates / Telegram global infrastructure.
GitHub, Inc.
Rolle. Hosting des Open-Source-Repositories und Issue-Tracker als Support-Kanal.
Übermittelte Daten. Issue-Inhalte und freiwillige Anhänge. Bitte keine personenbezogenen Daten in öffentlichen Issues posten; nach der ersten Antwort wird ein privater Kanal angeboten.
Speicherort. USA.
Role. Hosting of the open-source repository and the issue tracker used as the support channel.
Data transferred. Issue contents and any voluntary attachments. Avoid posting personal data in public issues; the operator offers a private channel after the first response.
Storage. United States.
Cloudflare, Inc.
Rolle. Autoritative DNS-Auflösung für die Domain dieser Instanz. Die Anwendung selbst steht nicht hinter dem Cloudflare-Proxy.
Übermittelte Daten. Quell-IP und User-Agent zum Zeitpunkt der Auflösung.
Speicherort. USA; globales Anycast-Netz von Cloudflare.
Role. Authoritative DNS for this instance's domain. The application itself is not behind the Cloudflare proxy; only the DNS resolution path is.
Data transferred. Source IP address and user-agent at resolution time.
Storage. United States; Cloudflare's standard global anycast network.
Hetzner Online GmbH
Rolle. Hardware-Hoster für Anwendungsserver und PostgreSQL-Datenbank.
Übermittelte Daten. Festplatten- und Netzwerkverkehr zwischen den vom Betreiber kontrollierten virtuellen Maschinen und dem öffentlichen Internet.
Speicherort. Deutschland (Europäische Union). Sämtliche HealthLog-Anwendungsdaten liegen auf Hetzner-Infrastruktur unter deutscher Gerichtsbarkeit.
Role. Hardware host for the application server and the PostgreSQL database.
Data transferred. Disk and network traffic between the operator-controlled virtual machines and the public internet.
Storage. Germany (European Union). All HealthLog application data lives on Hetzner-hosted infrastructure under German jurisdiction.
5. Data storage and retention
Deutsch — Speicherung, Speicherdauer und Verschlüsselung
- Serverstandort — primäre Datenhaltung in einer PostgreSQL-Datenbank auf Hetzner-Infrastruktur in Deutschland; die Anwendung wird vom Betreiber als Privatperson in Deutschland verant- wortet. Außer den unter Abschnitt 4 genannten Anbietern ist keine weitere Drittspeicherung beteiligt.
- Verschlüsselung im Transit — TLS 1.3 mit HSTS auf allen öffentlichen Endpunkten; die iOS-Anwendung pinnt zusätzlich das TLS-Zertifikat.
- Verschlüsselung im Ruhezustand — verschlüsselte Festplatten; sensible Spalten (Auth- Token, Integrations-Secrets) zusätzlich auf Spaltenebene mit einem separaten Schlüssel verschlüsselt.
- Backups — täglich, verschlüsselt, 30 Tage Aufbewahrung auf einem S3-kompatiblen Objektspeicher mit eigener Verschlüsselungsschicht.
- Standard-Speicherdauern — Messungen: gleitendes 5-Jahres-Fenster (Roh-Stichproben älter als 5 Jahre werden automatisch verdichtet bzw. gelöscht; aggregierte Verläufe bleiben). Audit-Logs: 90 Tage. Server-Zugriffsprotokolle: 14 Tage. Fehl- geschlagene APNs-Zustellungen: 30 Tage. Einwilligungs- belege: 5 Jahre.
- Löschung — der Endpunkt zur Konto-Löschung läuft kaskadiert durch jede nutzer-skopierte Tabelle: Gesundheitsmessungen, Sitzungen, Audit-Log, Integrations-Token, Push- Abonnements, Erfolge, hochgeladene Dateien. Die Löschung erfolgt sofort; Backups laufen innerhalb des 30-Tage- Fensters aus.
English translation
- Server location — primary store is PostgreSQL on Hetzner-hosted hardware in Germany; the application is operated by the controller as an individual based in Germany. No third- party hosting beyond the providers listed in section 4.
- Encryption in transit — TLS 1.3 with HSTS on every public endpoint; the iOS application additionally pins the TLS certificate.
- Encryption at rest — disk-level encryption plus column-level encryption with a separate key for sensitive columns (auth tokens, integration secrets).
- Backups — daily, encrypted, retained for 30 days on an S3- compatible object store with its own encryption-at- rest layer.
- Default retention windows — measurements: rolling 5-year window (raw samples older than 5 years are aggregated or removed; long-arc aggregates persist). Audit logs: 90 days. Server access logs: 14 days. Failed APNs deliveries: 30 days. Consent receipts: 5 years.
- Deletion — the account-deletion endpoint cascades through every user-scoped table: health observations, sessions, audit log, integration tokens, push subscriptions, achievements, uploaded files. Deletion is immediate; backups age out under the 30-day window.
6. Your rights (GDPR Art. 15-22, DSGVO)
Deutsch — Ihre Rechte (DSGVO Art. 15–22)
- Auskunftsrecht (Art. 15) — jeder gespeicherte Wert ist über die Historie in der App erreichbar. Ein konsolidierter JSON-Export liegt unter Einstellungen → Daten & Export.
- Recht auf Berichtigung (Art. 16) — jeder Eintrag bietet eine Bearbeiten- und Löschen- Aktion in der App.
- Recht auf Löschung (Art. 17) — Einstellungen → Daten → Konto löschen. Die Aktion kaskadiert sofort über alle nutzer-skopierten Tabellen via
User.delete+onDelete: Cascade; Backups laufen innerhalb des 30-Tage-Fensters aus. - Recht auf Einschränkung (Art. 18) — administrative Sperre per Datenschutz-Anfrage (siehe Abschnitt 11).
- Recht auf Datenübertragbarkeit (Art. 20) — der JSON-Export unter Einstellungen → Daten & Export liefert den vollständigen Datensatz in maschinenlesbarem Format.
- Widerspruch und automatisierte Entscheidungen (Art. 21–22) — der KI-Coach trifft keine automatisierten Entscheid- ungen im Sinne von Art. 22 DSGVO. Er erzeugt Texte zum Nachlesen; ohne ausdrückliche Bestätigung wird keine Aktion ausgeführt. Siehe Abschnitt 7 zur Medizinpro- dukte-Grenze.
- Beschwerderecht — beim Bundesbeauftragten für den Datenschutz und die Informationsfreiheit (BfDI) oder bei der für den gewöhnlichen Aufenthaltsort der betroffenen Person zuständigen Aufsichtsbehörde.
English translation
- Right of access (Art. 15) — every stored value is reachable through the in-app history surfaces. A consolidated JSON export is offered under Settings → Data & export.
- Right to rectification (Art. 16) — every record carries an in-app edit and delete action.
- Right to erasure (Art. 17) — Settings → Data → Delete account. The action cascades immediately through every user-scoped table via
User.delete+onDelete: Cascade; backups age out within the 30-day window. - Right to restriction of processing (Art. 18) — request an administrative suspension via the contact channel in section 11.
- Right to data portability (Art. 20) — the JSON export under Settings → Data & export returns the full record set in a structured, machine-readable format.
- Right to object / automated decision-making (Art. 21- 22) — the AI Coach does not make automated decisions in the Art. 22 sense. It generates written suggestions for the user to read; no action is taken without explicit confirmation. See section 7 for the medical-device boundary.
- Right to lodge a complaint — with the Federal Commissioner for Data Protection and Freedom of Information (BfDI) for the German federal level, or with the data-protection authority of the user's habitual residence.
7. Medical-device boundary (EU MDR 2017/745, MDCG 2021-24)
Deutsch — Medizinprodukte-Grenze (EU-MDR 2017/745, MDCG 2021-24)
HealthLog ist kein Medizinprodukt im Sinne der EU-Verordnung 2017/745 (MDR). Die Anwendung erfasst und visualisiert Beobachtungen, die der Nutzer selbst eingegeben hat; sie diagnostiziert, behandelt, verordnet oder überwacht keine spezifische medizinische Erkrankung.
Die KI-Coach-Oberfläche ist durch zwei ausdrückliche Grundregeln im System-Prompt eingegrenzt: sie empfiehlt keine GLP-1-Dosen (GROUND RULE 9) und erzeugt keine wirkstoff-bezogenen Schätzungen (GROUND RULE 15). Der GLP-1-Research-Mode ist eine reine Visualisierung, die erst nach einer versionierten Bestätigung freigeschaltet wird, die dem Nutzer die MDR-Grenze ausdrücklich nennt. Keine dieser Oberflächen gibt klinische Empfehlungen aus.
Für medizinische Beratung muss eine approbierte ärztliche Fachkraft konsultiert werden. HealthLog soll diese Beratung unterstützen, indem es selbst erfasste Daten aufbereitet — nicht ersetzen.
English translation
HealthLog is not a medical device within the meaning of EU Regulation 2017/745 (MDR). The application records and displays observations the user has entered; it does not diagnose, treat, prescribe, or monitor a specific medical condition.
The AI Coach surface is constrained by two explicit ground rules in its system prompt: it does not recommend GLP-1 doses (GROUND RULE 9), and it does not produce drug-level estimates (GROUND RULE 15). The GLP-1 Research Mode chart is a display-only visualisation gated behind a versioned acknowledgment that cites the MDR boundary to the user before unlocking. None of these surfaces issue clinical recommendations.
For medical advice the user must consult a licensed clinician. HealthLog is intended to support that conversation by surfacing self-tracked data — not to replace it.
8. Apple App Store privacy categories
Deutsch — Apple-App-Store-Datenschutzkategorien
Die Privacy-Nutrition-Labels der iOS-Anwendung in App Store Connect ordnen sich folgenden Kategorien zu (jeweils linked to the user, ausschließlich zur App- Funktion verwendet):
- Gesundheit & Fitness.
- Sensible Informationen (Blutdruck, Blutzucker, Medikamente).
- Kontakt-Informationen (E-Mail-Adresse) — Konto-Verwaltung.
- Nutzer-Inhalte (Notizen zu Messungen, Stimmungsnotizen).
- Kennungen (Geräte- und Nutzer-Kennung).
- Diagnose, Nutzung, Browsing, Suche, Andere — nicht erhoben.
- Standort — nicht erhoben, außer bei einer optional vom Nutzer angehängten GPS-Workout-Route.
English translation
The iOS application's Privacy Nutrition Labels in App Store Connect map to the following categories (each linked to the user, used only for app functionality):
- Health & Fitness.
- Sensitive Info (blood pressure, glucose, medications).
- Contact Info (email address) — account management.
- User Content (notes attached to measurements, mood notes, bug- report text).
- Identifiers (device identifier, user identifier).
- Diagnostics, Usage Data, Browsing History, Search History, Other Data — not collected.
- Location — not collected, except for an optional GPS route the user attaches manually to a workout.
9. Children
Deutsch — Kinder
HealthLog richtet sich nicht an Kinder unter 16 Jahren. Die Anwendung sollte nicht ohne nachweisbare elterliche Aufsicht von Personen unter 16 Jahren verwendet werden. Der Betreiber erhebt wissentlich keine personenbezogenen Daten von Kindern unter 16 Jahren; sollte dies auffallen, werden die Daten umgehend gelöscht.
English translation
HealthLog is not directed at children under the age of 16. The application should not be used by anyone under 16 without verifiable parental supervision. The operator does not knowingly collect personal data from children under 16; if such data is discovered, it will be deleted on detection.
10. Changes to this policy
Deutsch — Änderungen dieser Erklärung
Diese Erklärung trägt oben einen Versionsstempel. Materielle Änderungen werden in den In-App-Versionshinweisen und im Open-Source-Changelog zusammengefasst. Die veröffentlichte Policy-Version ist an die Anwendungsversion gebunden, mit der sie eingeführt wurde.
English translation
This document is version-stamped at the top. Material changes will be summarised in the in-app release notes and on the open-source changelog. The published policy version is bound to the application release version that introduced it.
11. Contact
Deutsch — Kontakt
Verantwortlicher und Ansprechpartner für DSGVO-Anfragen ist der Betreiber dieser Instanz, eine Privatperson mit Sitz in Deutschland (vollständige Postanschrift wird Antragstellern auf Anfrage über den unten genannten Kanal mitgeteilt; sie ist nicht öffentlich aufgeführt, um gezielte Belästigung zu verhindern — eine Klarstellung, die die deutschen DPAs in ihren Hinweisen zu Impressums- Pflichten ausdrücklich zulassen, sofern eine elektronische Erreichbarkeit besteht).
E-Mail (Betreiber): mbombeck@gmail.com. Bitte das E-Mail-Betreff mit "HealthLog DSGVO — <Auskunft | Löschung | Übertragbarkeit>" kennzeichnen. Erste Antwort innerhalb von 30 Tagen gemäß Art. 12 Abs. 3 DSGVO.
Alternativ via GitHub: öffentliches Issue unter github.com/MBombeck/HealthLog/issues mit Titel GDPR — <Access | Erasure | Portability> request — bitte keine personenbezogenen Daten im öffentlichen Issue posten; ein privater Kanal wird in der ersten Antwort angeboten.
English translation
The controller and point of contact for GDPR enquiries is the operator of this instance, an individual based in Germany (the full postal address is disclosed to requesters via the channel below upon request; it is not publicly listed to prevent targeted harassment — a practice explicitly tolerated by German data-protection authorities provided an electronic contact route is available).
Email (operator): mbombeck@gmail.com. Subject line: "HealthLog GDPR — <Access | Erasure | Portability>". First reply within 30 days per Art. 12 (3) GDPR.
Alternative via GitHub: public issue at github.com/MBombeck/HealthLog/issues titled GDPR — <Access | Erasure | Portability> request — please do not include personal data in the public issue; a private channel will be offered in the first response.