Initial FeelAloud project
This commit is contained in:
151
README.md
Normal file
151
README.md
Normal file
@@ -0,0 +1,151 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user