Shuffle/app/README.md
cschlaefke e5df79ee0a feat(app): add Flutter scaffold with config, logging, routing and l10n
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-02 20:17:24 +01:00

42 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Shuffle – Flutter-App
Brettspiel-App für iOS, Android und Web (eine Codebasis). Architektur und Konventionen: `../CLAUDE.md`, `../docs/adr/`.
## Struktur
```
lib/
core/ config, logging, error, result, supabase, routing, l10n, theme
features/ <feature>/{data,domain,presentation}
l10n/ app_de.arb, app_en.arb (+ generierte AppLocalizations)
test/ Spiegel von lib/
env/ *.example.json (echte Umgebungsdateien sind git-ignoriert)
```
## Starten
```bash
cd app
flutter pub get
cp env/dev.example.json env/dev.json # Werte anpassen
dart run build_runner build --delete-conflicting-outputs
flutter run -d chrome --dart-define-from-file=env/dev.json
```
Pflichtwerte: `SUPABASE_URL`, `SUPABASE_ANON_KEY` (der Start bricht ohne sie ab).
Optional mit Platzhalter: `SITE_URL`, `LEGAL_PRIVACY_URL`, `LEGAL_TERMS_URL`, `TERMS_VERSION`, `APP_ENV`.
## Platzhalter-Identität (vor dem Store-Release festlegen)
| Was | Wo ändern |
|---|---|
| Bundle-/Application-ID `work.cshomelabs.shuffle` | `android/app/build.gradle.kts` (`namespace`, `applicationId`), Kotlin-Package unter `android/app/src/main/kotlin/`, `ios/Runner.xcodeproj/project.pbxproj` (`PRODUCT_BUNDLE_IDENTIFIER`) |
| App-Name „Shuffle“ | `android/app/src/main/AndroidManifest.xml`, `ios/Runner/Info.plist`, `web/index.html`, `web/manifest.json`, l10n-Schlüssel `appTitle` |
| Web-Domain, Rechtstexte, Version der Rechtstexte | `env/*.json` (`SITE_URL`, `LEGAL_*`, `TERMS_VERSION`) |
Die Bundle-ID lässt sich nach der ersten Store-Veröffentlichung nicht mehr ändern.
## Hinweise
- Generierte Dateien (`*.g.dart`, `lib/l10n/app_localizations*.dart`) werden mit eingecheckt; nach Änderungen an `@riverpod`-Code oder ARB-Dateien neu erzeugen (`build_runner`, `flutter gen-l10n`).
- Web-URLs ohne `#` (`usePathUrlStrategy`): der Webserver braucht eine SPA-Rewrite-Regel (alle Pfade auf `index.html`).