Initial FeelAloud project

This commit is contained in:
MrDiderot
2026-07-22 22:18:33 +02:00
commit 10fca0756d
48 changed files with 8942 additions and 0 deletions

107
docs/PRIVACY.md Normal file
View File

@@ -0,0 +1,107 @@
# Datenschutz und Datenverarbeitung
Dieses Dokument beschreibt den aktuellen technischen Stand von FeelAloud. Es
ist eine Entwicklungsdokumentation und ersetzt keine individuell geprüfte,
öffentlich erreichbare Datenschutzerklärung für den App Store.
## Kurzfassung
FeelAloud hat kein Konto, kein eigenes Backend, keine Werbung, kein Tracking
und keine Analyse-SDKs. Die App überträgt nach aktuellem Code keine
Tagebuchdaten an den Entwickler. Produktdaten verbleiben lokal, bis die Person
selbst einen Export über das iOS-Share-Sheet auslöst.
## Verarbeitete Daten
| Datenart | Zweck | Speicherort | Automatische Übertragung |
| --- | --- | --- | --- |
| Mikrofon-Audio während einer Aufnahme | Spracherkennung | Nur laufende Audio-Pipeline | Nein; On-Device-Erkennung wird erzwungen |
| Transkript | Tagebucheintrag und lokale Strukturierung | SwiftData nach Bestätigung | Nein |
| Stimmungs- und Ohrwurmfelder | Persönliche Dokumentation | SwiftData | Nein |
| Check-in-Wert und Kontextnotiz | Verlauf und Durchschnitt | SwiftData | Nein |
| Erinnerungszeiten | Lokale Notification-Planung | UserDefaults über `@AppStorage` | Nein |
| XLSX-/CSV-Datei | Freiwilliger Export | Temporäres App-Verzeichnis | Nur über selbst gewähltes Share-Ziel |
## Berechtigungen
### Mikrofon
Wird erst beim Start einer Spracheingabe angefragt. Das Audio wird an
`SFSpeechAudioBufferRecognitionRequest` übergeben und nicht als Audiodatei
gespeichert.
### Spracherkennung
Der Request setzt `requiresOnDeviceRecognition = true`. Ist die lokale deutsche
Erkennung nicht verfügbar, bricht FeelAloud ab und bietet eine manuelle Eingabe
an. Es existiert kein eigener Cloud-Fallback.
### Mitteilungen
Wird erst beim Aktivieren täglicher Erinnerungen angefragt. Die Erinnerungen
werden mit `UNCalendarNotificationTrigger` lokal geplant. Der Notification-
Inhalt enthält keine gespeicherte Stimmung und keinen Tagebuchtext.
## Lokale KI
FeelAloud verwendet `SystemLanguageModel.default` aus Apples Foundation Models.
Vor der Nutzung wird die Verfügbarkeit geprüft. Das Modell erhält das
Transkript und soll ausschließlich strukturierte Felder extrahieren. Die Person
prüft das Ergebnis vor dem Speichern.
Foundation Models sind kein Diagnosesystem. Der Prompt untersagt medizinische
Einschätzungen, Ratschläge und das Erfinden nicht genannter Inhalte.
## Speicherung, Aufbewahrung und Löschung
- Einträge und Check-ins liegen im lokalen SwiftData-Store des App-Containers.
- Einstellungen liegen in den lokalen UserDefaults des App-Containers.
- Es gibt keine automatische Aufbewahrungsfrist und keine Cloud-Synchronisation
durch eigenen App-Code.
- Der aktuelle Stand besitzt noch keine Schaltfläche **Alle Daten löschen**.
Das Entfernen der App löscht den lokalen App-Container. Eine In-App-Löschung
ist vor einer öffentlichen Veröffentlichung empfohlen.
- Falls später iCloud, Backup, Crash Reporting oder ein Backend ergänzt wird,
müssen dieses Dokument, die öffentliche Datenschutzerklärung, das Privacy
Manifest und die App-Store-Angaben neu bewertet werden.
## Export und Weitergabe
Ein Export erfolgt nur nach Tippen auf eine Exportfunktion. Anschließend zeigt
iOS das Share-Sheet. Ab diesem Zeitpunkt bestimmt die Person selbst das Ziel,
zum Beispiel Dateien, Mail oder eine Therapie-Praxis. Für den Datenschutz des
gewählten Ziels ist FeelAloud technisch nicht mehr zuständig.
Exporte können besonders sensible Freitexte enthalten. Die Oberfläche und die
App-Store-Beschreibung sollten darauf deutlich hinweisen.
## Privacy Manifest
`FeelAloud/PrivacyInfo.xcprivacy` deklariert:
- kein Tracking;
- keine vom Entwickler gesammelten Datentypen;
- Zugriff auf UserDefaults mit Required-Reason-Code `CA92.1`, ausschließlich
zum Lesen und Schreiben app-eigener Einstellungen.
Vor jedem App-Store-Upload sollte Xcodes Privacy Report geprüft werden. Neue
Frameworks oder APIs können weitere Required-Reason-Einträge erforderlich
machen.
## Erwartete App-Store-Datenschutzangabe
Auf Basis des derzeitigen Codes ist voraussichtlich **Data Not Collected** die
passende Angabe für die durch den Entwickler erhobenen Daten. Diese Einschätzung
muss unmittelbar vor der Einreichung anhand des finalen Builds und aller
aktivierten Apple-Dienste erneut geprüft werden.
TestFlight selbst kann im Auftrag von Apple Crash-, Nutzungs- und freiwillige
Feedbackdaten verarbeiten. Diese Verarbeitung ist von der Produktlogik der App
zu unterscheiden.
## Medizinischer und sicherheitsbezogener Hinweis
FeelAloud dient nur der persönlichen Dokumentation. Die App erkennt keine
Krisen zuverlässig und ersetzt weder medizinische Beratung noch Therapie oder
Notfallhilfe. Marketingtexte dürfen keine Diagnose- oder Heilversprechen
enthalten.