feat(app): App-Fundament – Flutter-Gerüst und Supabase-Konfiguration #32

Merged
cschlaefke merged 11 commits from feature/31-app-fundament into main 2026-11-02 21:21:02 +00:00
Owner

Zusammenfassung

Fundament für alle weiteren Features (Voraussetzung für #1): Flutter-Projekt in app/, Konfiguration über --dart-define-from-file, Logger, Supabase-Client, go_router, l10n (de/en), Theme-Basis, Test-Helfer, CI für app/ und supabase/config.toml.

Closes #31

Spec: Aufgaben F1–F8 in docs/specs/1-auth-registrierung-anmeldung.md (liegt auf feature/1-auth-registrierung-anmeldung, Spec dort freigegeben).

Aufgaben

  • F1 – supabase/config.toml, .gitignore (app/env/*.json, supabase/.temp, .branches)
  • F2 – Flutter-Projekt app/, Pakete gepinnt, feature-first-Struktur, strenge Analyse
  • F3 – AppConfig, Logger, Supabase-Client-Provider
  • F4 – go_router + Riverpod, austauschbare RedirectSource
  • F5 – l10n DE/EN, Fallback Englisch
  • F6 – Theme-Basis (Light/Dark, Tokens, Kontraste, Touch-Ziele), docs/design-system.md
  • F7 – Test-Helfer (pumpApp, Fakes), Vorlage Abdeckungsmatrix
  • F8 – CI auf app/ umgestellt, Flutter 3.47.9 per Git-Tag installiert

Abdeckungsmatrix

Reines Fundament ohne fachliche Akzeptanzkriterien; Tests: AppConfig, Result, Logger, Locale-Auflösung, Router, App-Start, Theme (Kontrast, Touch-Ziele, Fokus), Test-Helfer (38 Tests).

Definition of Done

  • Format + Analyse ohne Befund (lokal)
  • Tests grün (38, lokal)
  • Android / iOS / Web geprüft – nur Web-Build lokal; Android/iOS nicht gestartet
  • Migration/RLS: nicht betroffen
  • l10n DE/EN, keine hartkodierten Strings
  • Barrierefreiheit: Flutter-Guidelines in Theme-Tests (Kontrast, Tap-Ziele, Fokus)
  • Doku aktualisiert (app/README.md, app/test/README.md, docs/design-system.md)

Hinweise für den Review

  • CI ungetestet auf dem Runner: Der Workflow hat bisher nie auf Forgejo gelaufen; dieser PR ist der erste Lauf (Flutter-Installation per Git-Tag, Cache-Keys, Generierungs-Check). Das supabase-tests-Job braucht den Runner docker-host.
  • supabase/config.toml hat noch CLI-Standardwerte; die Auth-Konfiguration kommt mit #1 (B2).
  • Bundle-ID work.cshomelabs.shuffle und Domain sind Platzhalter (siehe app/README.md).
  • cupertino_icons-Warnung im Web-Build bekannt, unkritisch.

Review-Ergebnis des code-reviewer: ein Blocker (CI-Nachweis, siehe oben), drei wichtige Punkte (Android INTERNET, Fokusring FilledButton, iOS-Lokalisierungen) sind behoben.

So testest du es lokal

cd app && flutter pub get
dart format --set-exit-if-changed . && flutter analyze && flutter test
cp env/dev.example.json env/dev.json   # SUPABASE_URL/-KEY eintragen
flutter run -d chrome --dart-define-from-file=env/dev.json

🤖 Generated with Claude Code

## Zusammenfassung Fundament für alle weiteren Features (Voraussetzung für #1): Flutter-Projekt in `app/`, Konfiguration über `--dart-define-from-file`, Logger, Supabase-Client, go_router, l10n (de/en), Theme-Basis, Test-Helfer, CI für `app/` und `supabase/config.toml`. Closes #31 Spec: Aufgaben F1–F8 in `docs/specs/1-auth-registrierung-anmeldung.md` (liegt auf `feature/1-auth-registrierung-anmeldung`, Spec dort freigegeben). ## Aufgaben - [x] F1 – `supabase/config.toml`, `.gitignore` (`app/env/*.json`, `supabase/.temp`, `.branches`) - [x] F2 – Flutter-Projekt `app/`, Pakete gepinnt, feature-first-Struktur, strenge Analyse - [x] F3 – `AppConfig`, Logger, Supabase-Client-Provider - [x] F4 – go_router + Riverpod, austauschbare `RedirectSource` - [x] F5 – l10n DE/EN, Fallback Englisch - [x] F6 – Theme-Basis (Light/Dark, Tokens, Kontraste, Touch-Ziele), `docs/design-system.md` - [x] F7 – Test-Helfer (`pumpApp`, Fakes), Vorlage Abdeckungsmatrix - [x] F8 – CI auf `app/` umgestellt, Flutter 3.47.9 per Git-Tag installiert ## Abdeckungsmatrix Reines Fundament ohne fachliche Akzeptanzkriterien; Tests: AppConfig, Result, Logger, Locale-Auflösung, Router, App-Start, Theme (Kontrast, Touch-Ziele, Fokus), Test-Helfer (38 Tests). ## Definition of Done - [x] Format + Analyse ohne Befund (lokal) - [x] Tests grün (38, lokal) - [ ] Android / iOS / Web geprüft – nur Web-Build lokal; Android/iOS nicht gestartet - [x] Migration/RLS: nicht betroffen - [x] l10n DE/EN, keine hartkodierten Strings - [x] Barrierefreiheit: Flutter-Guidelines in Theme-Tests (Kontrast, Tap-Ziele, Fokus) - [x] Doku aktualisiert (`app/README.md`, `app/test/README.md`, `docs/design-system.md`) ## Hinweise für den Review - **CI ungetestet auf dem Runner:** Der Workflow hat bisher nie auf Forgejo gelaufen; dieser PR ist der erste Lauf (Flutter-Installation per Git-Tag, Cache-Keys, Generierungs-Check). Das supabase-tests-Job braucht den Runner `docker-host`. - `supabase/config.toml` hat noch CLI-Standardwerte; die Auth-Konfiguration kommt mit #1 (B2). - Bundle-ID `work.cshomelabs.shuffle` und Domain sind Platzhalter (siehe `app/README.md`). - `cupertino_icons`-Warnung im Web-Build bekannt, unkritisch. Review-Ergebnis des `code-reviewer`: ein Blocker (CI-Nachweis, siehe oben), drei wichtige Punkte (Android INTERNET, Fokusring FilledButton, iOS-Lokalisierungen) sind behoben. ## So testest du es lokal ```bash cd app && flutter pub get dart format --set-exit-if-changed . && flutter analyze && flutter test cp env/dev.example.json env/dev.json # SUPABASE_URL/-KEY eintragen flutter run -d chrome --dart-define-from-file=env/dev.json ``` 🤖 Generated with [Claude Code](https://claude.com/claude-code)
cschlaefke added 7 commits 2026-11-02 19:37:11 +00:00
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
fix(app): address review findings for foundation
Some checks failed
CI / flutter (pull_request) Successful in 2m29s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 23s
b03d771869
- 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>
Author
Owner

Review (code-reviewer, 2026-11-02) – Urteil: nicht merge-bereit, bis die CI grün ist.

Blocker (offen): CI-Grün ist nicht belegt; der umgebaute Workflow (Flutter per Git-Tag, Cache, Generierungs-Check) lief noch nie auf dem Runner. Dieser PR ist der erste Lauf. supabase-tests braucht den Runner docker-host.

Wichtig (behoben in b03d771):

  • Android: INTERNET-Permission im Main-Manifest ergänzt
  • Fokusrahmen am FilledButton war unsichtbar (primary auf primary) → onSurface, Test ergänzt
  • iOS: CFBundleLocalizations (de, en) ergänzt

Nice-to-have (teils umgesetzt): SITE_URL ohne Produktions-Default, Logger-configure() idempotent, <html lang>, Test-README. Bewusst offen: doppelte Flutter-Installation im Workflow, cupertino_icons-Warnung, Import core → features/home.

Label status/ready-for-merge setze ich nach grünem CI-Lauf.

**Review (code-reviewer, 2026-11-02)** – Urteil: nicht merge-bereit, bis die CI grün ist. **Blocker (offen):** CI-Grün ist nicht belegt; der umgebaute Workflow (Flutter per Git-Tag, Cache, Generierungs-Check) lief noch nie auf dem Runner. Dieser PR ist der erste Lauf. `supabase-tests` braucht den Runner `docker-host`. **Wichtig (behoben in b03d771):** - Android: `INTERNET`-Permission im Main-Manifest ergänzt - Fokusrahmen am FilledButton war unsichtbar (primary auf primary) → `onSurface`, Test ergänzt - iOS: `CFBundleLocalizations` (de, en) ergänzt **Nice-to-have (teils umgesetzt):** `SITE_URL` ohne Produktions-Default, Logger-`configure()` idempotent, `<html lang>`, Test-README. Bewusst offen: doppelte Flutter-Installation im Workflow, `cupertino_icons`-Warnung, Import `core` → `features/home`. Label `status/ready-for-merge` setze ich nach grünem CI-Lauf.
cschlaefke added 1 commit 2026-11-02 20:40:17 +00:00
fix(supabase): use db.major_version 15 accepted by CLI 3.0.0
Some checks failed
CI / flutter (pull_request) Successful in 1m1s
CI / web-build (pull_request) Successful in 51s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 18s
9fc3ed0a32
The CLI rejects 16; 15 matches the self-hosted Supabase image.

Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-02 20:48:18 +00:00
fix(supabase): use db.major_version 17
Some checks failed
CI / flutter (pull_request) Successful in 1m0s
CI / web-build (pull_request) Successful in 52s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Failing after 17s
2ff657c03f
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-02 20:57:12 +00:00
docs: update PostgreSQL version to 17 in CLAUDE.md
Some checks failed
CI / flutter (pull_request) Successful in 1m3s
CI / web-build (pull_request) Successful in 1m4s
CI / supabase (pull_request) Successful in 5s
CI / supabase-tests (pull_request) Failing after 36s
04d9d01395
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added 1 commit 2026-11-02 21:05:11 +00:00
ci: run supabase-tests against the runner's docker-in-docker daemon
All checks were successful
CI / flutter (pull_request) Successful in 1m5s
CI / web-build (pull_request) Successful in 53s
CI / supabase (pull_request) Successful in 3s
CI / supabase-tests (pull_request) Successful in 35s
51ab6e2667
Refs #31

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
cschlaefke added the
status/ready-for-merge
label 2026-11-02 21:19:48 +00:00
Author
Owner

CI grün für 51ab6e2 (Run 14): flutter, web-build, supabase, supabase-tests erfolgreich. Damit ist der Review-Blocker (CI-Nachweis) erledigt.

Seit dem Review zusätzlich geändert:

  • supabase/config.toml: db.major_version = 17 (CLI 3.0.0 akzeptiert nur 15/17; CLAUDE.md angepasst)
  • supabase-tests läuft über das Docker-in-Docker des Runners (Docker-CLI 27.3.1, .forgejo/scripts/supabase-db-tests.sh statt supabase test db, lokal 97 pgTAP-Tests grün)

Hinweis: docker-host-Jobs haben Vollzugriff aufs Docker-in-Docker des Runners; Fork-PRs sollten für diesen Job eingeschränkt werden (Follow-up).

Bereit zum Merge durch Chris.

**CI grün** für `51ab6e2` (Run 14): `flutter`, `web-build`, `supabase`, `supabase-tests` erfolgreich. Damit ist der Review-Blocker (CI-Nachweis) erledigt. Seit dem Review zusätzlich geändert: - `supabase/config.toml`: `db.major_version = 17` (CLI 3.0.0 akzeptiert nur 15/17; `CLAUDE.md` angepasst) - `supabase-tests` läuft über das Docker-in-Docker des Runners (Docker-CLI 27.3.1, `.forgejo/scripts/supabase-db-tests.sh` statt `supabase test db`, lokal 97 pgTAP-Tests grün) Hinweis: `docker-host`-Jobs haben Vollzugriff aufs Docker-in-Docker des Runners; Fork-PRs sollten für diesen Job eingeschränkt werden (Follow-up). Bereit zum Merge durch Chris.
cschlaefke merged commit 29f22605a1 into main 2026-11-02 21:21:02 +00:00
cschlaefke deleted branch feature/31-app-fundament 2026-11-02 21:21:03 +00:00
Sign in to join this conversation.
No description provided.