meldestelle/docs/04_Agents/Roadmaps/Frontend_Roadmap.md
Stefan Mogeritsch 7e16b3f318
Some checks failed
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Has been cancelled
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Has been cancelled
docs(roadmaps): add sprint execution order and detailed role-specific roadmaps
- Added `SPRINT_EXECUTION_ORDER.md` to define the cross-role sprint step sequence.
- Created individual roadmaps for Architect, Backend, Frontend, DevOps, Rulebook, QA, UI/UX, and Curator.
- Captured developer responsibilities, dependencies, and timelines for Sprints A–C.
- Aligned sprint planning documentation with session log agreements.
- Provided structured documentation in `docs/04_Agents/Roadmaps/`.

Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
2026-04-02 14:35:54 +02:00

88 lines
3.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.

# 🎨 [Frontend Expert] — Schritt-für-Schritt Roadmap
> **Stand:** 2. April 2026
> **Rolle:** KMP, Compose Desktop, State-Management, MVVM/UDF, Backend-Anbindung
---
## 🔴 Sprint A — Sofort (diese Woche)
- [ ] **A-1** | ViewModel-Architektur definieren und Referenz-Implementierung umsetzen
- [ ] MVVM mit UDF (Unidirectional Data Flow) als verbindliches Muster festlegen
- [ ] `Intent`- und `State`-Klassen-Struktur definieren (Vorlage für alle anderen ViewModels)
- [ ] `VeranstalterViewModel` als vollständige Referenz-Implementierung umsetzen
- [ ] `State`-Klasse definieren
- [ ] `Intent`-Klasse (Sealed Class) definieren
- [ ] Business-Logik aus Composables herausziehen (keine `StoreV2`-Aufrufe mehr direkt in `onSaved`)
- [ ] Lokalen `remember`-State durch ViewModel-State ersetzen
- [ ] Ergebnis als Muster-Dokument in `docs/06_Frontend/` ablegen
- [ ] **A-2** | Abteilungs-Logik im Bewerb-Dialog berücksichtigen
- [ ] Beim Anlegen eines Bewerbs: Abteilungs-Auswahl als Teil des Dialogs
- [ ] CSN-C-NEU: Automatischer Vorschlag der Pflicht-Teilung (ohne/mit Lizenz; R1/R2+)
- [ ] Abteilungs-Typ setzen: `SEPARATE_SIEGEREHRUNG` oder `ORGANISATORISCH`
---
## 🟠 Sprint B — Kurzfristig (nächste Woche)
- [ ] **B-1** | ViewModels für alle V2-Screens umsetzen
- [ ] `TurnierViewModel`
- [ ] `BewerbViewModel` (inkl. Abteilungs-Logik)
- [ ] `PferdProfilViewModel`
- [ ] `ReiterProfilViewModel`
- [ ] `VereinsViewModel`
- [ ] `FunktionaerViewModel`
- [ ] `AbteilungViewModel` (Startliste, Ergebnisse)
- [ ] **B-2** | Ktor-Clients und Repositories für Backend-Anbindung vorbereiten
- [ ] Ktor-HTTP-Client konfigurieren (BaseURL, Auth-Header, Timeout)
- [ ] Repository-Interface je Entität definieren (ermöglicht späteres Austauschen von Mock → Real)
- [ ] `VeranstalterRepository` mit echtem Backend-Client implementieren
- [ ] `TurnierRepository` implementieren
- [ ] `BewerbRepository` implementieren
- [ ] `AbteilungRepository` implementieren
- [ ] `StoreV2` schrittweise durch echte Repositories ersetzen
- [ ] **B-3** | Validierungs-Live-Feedback in Edit-Dialogen
- [ ] Spezifikation von 📜 Rulebook Expert (Sprint A-5) als Basis nutzen
- [ ] OEPS-Nummer: Inline-Validierung beim Tippen
- [ ] FEI-ID: Inline-Validierung beim Tippen
- [ ] Lizenzklasse × Bewerbs-Klasse: Warnung wenn nicht erlaubt
- [ ] Altersklasse Pferd: Warnung wenn nicht kompatibel
- [ ] **B-4** | Kassa-Screen: Veranstaltungs-Kassa implementieren
- [ ] Gesamt-Saldo-Ansicht (Salden aus allen Turnieren der Veranstaltung)
- [ ] Turnier-übergreifender Zahlvorgang (eine Zahlung, mehrere Rechnungen)
- [ ] Rechnungsvorschau je Turnier
---
## 🟡 Sprint C — Mittelfristig (in 2 Wochen)
- [ ] **C-1** | Mock-Store (`StoreV2`) vollständig ablösen
- [ ] Alle verbleibenden `StoreV2`-Referenzen durch echte Repositories ersetzen
- [ ] `StoreV2` nach vollständiger Ablösung entfernen oder als `@Deprecated` markieren
- [ ] **C-2** | LAN-Sync-UI vorbereiten (nach ADR von Architect)
- [ ] Verbindungsstatus-Anzeige (Online/Offline/LAN)
- [ ] Sync-Trigger manuell und automatisch
> ⏸️ **USB-Stick Fallback (Export/Import UI)** — Separate Besprechung zu einem späteren Zeitpunkt
---
## 📌 Abhängigkeiten
| Warte auf | Von wem |
|----------------------------------|--------------------|
| Domänen-Modell final (Abteilung) | 🏗️ Architect |
| CRUD-Endpunkte | 👷 Backend |
| Validierungs-Spezifikation | 📜 Rulebook Expert |
| Wireframes Edit-Formulare | 🖌️ UI/UX Designer |
| Meine Aufgabe | Ermöglicht wem |
|--------------------------|-----------------------------------------------|
| ViewModel-Referenz (A-1) | Alle anderen ViewModels folgen diesem Muster |
| Ktor-Repositories (B-2) | Ablösung von StoreV2, echte Daten im Frontend |