152 lines
5.8 KiB
Markdown
152 lines
5.8 KiB
Markdown
# 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.
|