Shuffle/app
cschlaefke 2d18a49fc2 fix(catalog): keyboard reach of the result list, tab order, stable select focus
Tiles are tab stops again, tab order is search field, filters, list (also
with the side bar), selects keep focus after a choice. Failure kind is
logged with stable names. Refs #3

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-11-04 01:25:23 +01:00
..
android fix(app): address review findings for foundation 2026-11-02 20:36:58 +01:00
assets/security fix(auth): address review findings for registration 2026-11-03 00:47:42 +01:00
env feat(app): add Flutter scaffold with config, logging, routing and l10n 2026-11-02 20:17:24 +01:00
ios fix(app): address review findings for foundation 2026-11-02 20:36:58 +01:00
lib fix(catalog): keyboard reach of the result list, tab order, stable select focus 2026-11-04 01:25:23 +01:00
test fix(catalog): keyboard reach of the result list, tab order, stable select focus 2026-11-04 01:25:23 +01:00
web fix(app): address review findings for foundation 2026-11-02 20:36:58 +01:00
.gitignore feat(app): add Flutter scaffold with config, logging, routing and l10n 2026-11-02 20:17:24 +01:00
.metadata feat(app): add Flutter scaffold with config, logging, routing and l10n 2026-11-02 20:17:24 +01:00
analysis_options.yaml feat(app): add Flutter scaffold with config, logging, routing and l10n 2026-11-02 20:17:24 +01:00
l10n.yaml feat(app): add Flutter scaffold with config, logging, routing and l10n 2026-11-02 20:17:24 +01:00
pubspec.lock fix(auth): address review findings for registration 2026-11-03 00:47:42 +01:00
pubspec.yaml fix(auth): address review findings for registration 2026-11-03 00:47:42 +01:00
README.md fix(app): address review findings for foundation 2026-11-02 20:36:58 +01:00
THIRD_PARTY.md feat(auth): add auth domain, repository, validators and router redirects 2026-11-03 00:09:47 +01:00

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 auf index.html).