- add INTERNET permission, iOS localizations, html lang - make focus ring visible on FilledButton - neutral SITE_URL default, idempotent logger configure Refs #31 Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
42 lines
2 KiB
Markdown
42 lines
2 KiB
Markdown
# 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` (Default `http://localhost:3000`; für Staging/Prod zwingend setzen, sonst zeigen Mail-Links auf localhost), `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`).
|