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

151
README.md Normal file
View 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.