# FeelAloud **FeelAloud** ist eine native, datensparsame iPhone-App für sprachbasierte Stimmungseinträge und kurze emotionale Check-ins. Der Name steht für zwei Gedanken: Gefühle laut aussprechen (*feel aloud*) und Gefühle haben dürfen (*feel allowed*). Die App besitzt kein Benutzerkonto und keinen eigenen Server. Tagebuchdaten, Momentaufnahmen und Einstellungen verbleiben im App-Container auf dem iPhone. Spracherkennung und strukturierte Auswertung sind ausdrücklich auf lokale Apple-Technologien konfiguriert. ## Funktionsumfang - Spracheinträge mit lokaler deutscher Spracherkennung - Strukturierung des gesprochenen Texts mit Apples Foundation Models - Manuelle Kontrolle und Korrektur vor dem Speichern - Schneller Check-in mit fünf Stufen von **Sehr gut** bis **Sehr schlecht** - Zwei oder drei frei einstellbare lokale Erinnerungen pro Tag - Kontextfrage beim nächsten normalen Öffnen am selben Tag nach auffälligen Check-ins (**Sehr gut**, **Schlecht** oder **Sehr schlecht**) - Verlauf für 7 Tage, 30 Tage, alle Daten oder einen eigenen Zeitraum - Liniendiagramm und Durchschnitt für den gewählten Zeitraum - Echter Excel-Export (`.xlsx`) mit Übersicht, Check-ins und Tagebucheinträgen - CSV-Export im bisherigen Numbers-kompatiblen Format - App Intent **Eintrag aufnehmen** für Kurzbefehle und den Action Button ## Technische Voraussetzungen - Apple-Intelligence-kompatibles iPhone - iOS 26 oder neuer - Apple Intelligence aktiviert und vollständig eingerichtet - Lokale deutsche Spracherkennung auf dem Gerät verfügbar - Mac mit Xcode 26 oder neuer - Für TestFlight: aktive Mitgliedschaft im Apple Developer Program Die App ist ausschließlich für das iPhone konfiguriert (`TARGETED_DEVICE_FAMILY = 1`). Eine iPad-Oberfläche gehört derzeit nicht zum Projektumfang. ## Projekt öffnen und starten 1. Repository auf einen Mac klonen. 2. `FeelAloud.xcodeproj` mit Xcode 26 oder neuer öffnen. 3. Projekt **FeelAloud** und Target **FeelAloud** auswählen. 4. Unter **Signing & Capabilities** das eigene Development Team wählen. 5. Prüfen, ob die Bundle-ID `de.feelaloud` im Team verfügbar ist; andernfalls eine eigene eindeutige Reverse-DNS-ID eintragen. 6. Ein geeignetes iPhone auswählen und mit **Run** (`⌘R`) installieren. Beim ersten Spracheintrag fragt iOS nach Mikrofon- und Spracherkennungszugriff. Die Mitteilungsfreigabe wird erst angefragt, wenn die täglichen Erinnerungen aktiviert werden. ## Build ohne Code Signing Auf einem Mac kann ein Simulator-Build beispielsweise so geprüft werden: ```bash xcodebuild \ -project FeelAloud.xcodeproj \ -scheme FeelAloud \ -sdk iphonesimulator \ -destination 'generic/platform=iOS Simulator' \ CODE_SIGNING_ALLOWED=NO \ build ``` Die lokale Foundation-Models-Funktion muss zusätzlich auf einem echten, kompatiblen iPhone geprüft werden. Simulator-Ergebnisse ersetzen diesen Test nicht. ## TestFlight Der vollständige Ablauf – einschließlich App Store Connect, Archivierung, Build-Nummer und Testerfreigabe – steht in [docs/TESTFLIGHT.md](docs/TESTFLIGHT.md). ## Datenschutz und sensible Daten FeelAloud verarbeitet persönliche Stimmungseinträge. Deshalb gelten im Projekt folgende Grundsätze: - kein Konto, kein eigenes Backend und kein API-Schlüssel; - lokale SwiftData-Speicherung; - lokale Spracherkennung durch `requiresOnDeviceRecognition = true`; - lokale Auswertung durch `SystemLanguageModel`; - lokale Mitteilungen statt eines Push-Servers; - Export nur nach ausdrücklicher Aktion der Person über das iOS-Share-Sheet; - keine Analyse-, Werbe- oder Tracking-SDKs. Details, Grenzen und Hinweise für die App-Store-Datenschutzangaben sind in [docs/PRIVACY.md](docs/PRIVACY.md) dokumentiert. Das Projekt enthält außerdem ein `PrivacyInfo.xcprivacy`-Manifest. ## Architektur | Bereich | Umsetzung | | --- | --- | | Oberfläche | SwiftUI | | Persistenz | SwiftData | | Spracheingabe | Speech + AVFoundation, Deutsch, lokal erzwungen | | Lokale KI | Foundation Models mit typisierter `@Generable`-Antwort | | Diagramm | Swift Charts | | Erinnerungen | UserNotifications, täglich wiederholend | | Export | Eigener XLSX/ZIP-Writer und CSV | | Systemintegration | App Intents und UIKit Share Sheet | Eine ausführliche Beschreibung der Komponenten und Datenflüsse befindet sich in [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md). ## Qualitätssicherung Die manuelle Abnahmecheckliste steht in [docs/QA-CHECKLIST.md](docs/QA-CHECKLIST.md). Sie umfasst unter anderem: - Erststart und Berechtigungen; - lokale Spracheingabe und KI-Fallback; - alle fünf Check-in-Stufen und Kontextfragen; - Erinnerungen bei Vordergrund-, Hintergrund- und Kaltstart; - Datumsfilter, Diagramm, XLSX- und CSV-Export; - Action Button, Dynamic Type, VoiceOver und Dark Mode. ## Aktuelle Grenzen - Die Oberfläche und Auswertungsanweisungen sind derzeit deutschsprachig. - Foundation Models und lokale Spracherkennung hängen von Geräte-, Sprach- und Apple-Intelligence-Verfügbarkeit ab; eine manuelle Eingabe bleibt möglich. - Es existiert noch keine versionierte SwiftData-Migrationsstrategie. - Automatisierte UI- und Unit-Tests sind noch nicht als eigenes Test-Target eingerichtet. - Eine Löschung aller gespeicherten Daten innerhalb der App ist noch nicht vorhanden; bis dahin entfernt das Löschen der App den lokalen App-Container. FeelAloud dient der persönlichen Dokumentation. Die App stellt keine medizinische Diagnose, Therapie oder Krisenhilfe bereit. ## Repository-Struktur ```text FeelAloud.xcodeproj/ Xcode-Projekt und Build-Konfiguration FeelAloud/ Swift-Quellcode, Assets und Privacy Manifest docs/ Architektur-, Datenschutz-, Test- und Release-Doku AppIcon.svg Bearbeitbare Vektorquelle des App-Icons CHANGELOG.md Versionshistorie ``` ## Version Aktueller Projektstand: **1.0 (Build 1)**. Änderungen werden in [CHANGELOG.md](CHANGELOG.md) festgehalten.