# 🎨 [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 |