- 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>
2 KiB
2 KiB
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
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 aufindex.html).