Update MVVM + UDF documentation: add metadata, extend examples, and consolidate references. Mark Curator roadmap tasks as complete.

This commit is contained in:
Stefan Mogeritsch 2026-04-03 23:05:01 +02:00
parent dbe7c74a9c
commit c6f28462eb
3 changed files with 18 additions and 5 deletions

View File

@ -49,8 +49,8 @@
- [x] Tenant-Isolation (ADR-0021) und Multi-Tenant-Architektur kurz beschreiben → `docs/05_Backend/Multi_Tenant_Kurz.md` (03.04.2026)
- [ ] **B-3** | `docs/06_Frontend/` aktualisieren
- [ ] ViewModel-Architektur-Muster (MVVM/UDF) verlinken
- [ ] Verweis auf `VeranstalterViewModel` als Referenz-Implementierung eintragen
- [x] ViewModel-Architektur-Muster (MVVM/UDF) verlinken`docs/06_Frontend/MVVM_UDF_Pattern.md` (03.04.2026)
- [x] Verweis auf `VeranstalterViewModel` als Referenz-Implementierung eintragen → Code: `frontend/features/veranstalter-feature/src/commonMain/kotlin/at/mocode/veranstalter/feature/presentation/VeranstalterViewModel.kt` (03.04.2026)
---

View File

@ -1,3 +1,10 @@
---
type: Reference
status: ACTIVE
owner: Frontend Expert
last_update: 2026-04-03
---
### MVVM + UDF (Unidirectional Data Flow) — Referenz & Vorlage
Ziel: Alle ViewModels folgen einem klaren, einheitlichen Muster. Composables rendern nur `State` und senden `Intent`s. Business-Logik liegt im ViewModel, nicht in den UI-Funktionen.
@ -14,7 +21,7 @@ Ziel: Alle ViewModels folgen einem klaren, einheitlichen Muster. Composables ren
#### Referenz-Implementierung: Veranstalter
Dateien:
- `frontend/features/veranstalter-feature/src/commonMain/.../VeranstalterViewModel.kt`
- `frontend/features/veranstalter-feature/src/commonMain/kotlin/at/mocode/veranstalter/feature/presentation/VeranstalterViewModel.kt`
- `frontend/features/veranstalter-feature/src/jvmMain/.../DefaultVeranstalterRepository.kt`
- `frontend/features/veranstalter-feature/src/jvmMain/.../VeranstalterAuswahlScreen.kt` (verwendet das ViewModel)
@ -99,6 +106,10 @@ fun VeranstalterAuswahlScreen(onZurueck: () -> Unit, onWeiter: (Long) -> Unit) {
- Persistenz/Netzwerk-Zugriffe laufen im Repository. Das ViewModel injiziert das Repository (später per DI).
- State ist die Single Source of Truth pro Screen.
#### Siehe auch
- Weitere Beispiele: `ReiterViewModel`, `PferdeViewModel`, `PingViewModel` in `frontend/features/*/presentation/`
- Koin-Integration (VM-Erzeugung in Composables): `org.koin.compose.viewmodel.koinViewModel`
#### Vorlage für neue ViewModels
1. `data class UiState(...)`
2. `sealed interface Intent { ... }`

View File

@ -2,7 +2,7 @@
type: Reference
status: ACTIVE
owner: Frontend Expert
last_update: 2026-01-15
last_update: 2026-04-03
---
# Frontend-Architektur "Meldestelle Portal"
@ -40,7 +40,9 @@ Das `frontend`-Verzeichnis ist wie folgt strukturiert, um eine klare Trennung de
## Wichtige Dokumente
* **[State-Management Strategie (UDF)](state-management-strategy.md):** Beschreibt die empfohlene Strategie für komplexe Screens.
* **[MVVM + UDF Referenz (ViewModel-Architektur)](MVVM_UDF_Pattern.md):** Verbindliches Muster für ViewModels inkl. Referenz-Implementierung `VeranstalterViewModel`.
* Referenz-Code: `frontend/features/veranstalter-feature/src/commonMain/kotlin/at/mocode/veranstalter/feature/presentation/VeranstalterViewModel.kt`
* (Alt) **State-Management Strategie (UDF)**: Wird durch obige Referenz konsolidiert/ersetzt.
* **[ADR-0010: SQLDelight für Cross-Platform-Persistenz](../01_Architecture/adr/0010-sqldelight-for-cross-platform-persistence.md):** Beschreibt die Entscheidung für SQLDelight.
* **[ADR-0011: Koin für Dependency Injection](../01_Architecture/adr/0011-koin-for-dependency-injection.md):** Beschreibt die Entscheidung für Koin.
* **[Offline-First-Architektur](offline-first-architecture.md):** Detaillierte Beschreibung der Offline-First-Strategie.