Update MVVM + UDF documentation: add metadata, extend examples, and consolidate references. Mark Curator roadmap tasks as complete.
This commit is contained in:
parent
dbe7c74a9c
commit
c6f28462eb
|
|
@ -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)
|
- [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
|
- [ ] **B-3** | `docs/06_Frontend/` aktualisieren
|
||||||
- [ ] ViewModel-Architektur-Muster (MVVM/UDF) verlinken
|
- [x] ViewModel-Architektur-Muster (MVVM/UDF) verlinken → `docs/06_Frontend/MVVM_UDF_Pattern.md` (03.04.2026)
|
||||||
- [ ] Verweis auf `VeranstalterViewModel` als Referenz-Implementierung eintragen
|
- [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)
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1,3 +1,10 @@
|
||||||
|
---
|
||||||
|
type: Reference
|
||||||
|
status: ACTIVE
|
||||||
|
owner: Frontend Expert
|
||||||
|
last_update: 2026-04-03
|
||||||
|
---
|
||||||
|
|
||||||
### MVVM + UDF (Unidirectional Data Flow) — Referenz & Vorlage
|
### 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.
|
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
|
#### Referenz-Implementierung: Veranstalter
|
||||||
|
|
||||||
Dateien:
|
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/.../DefaultVeranstalterRepository.kt`
|
||||||
- `frontend/features/veranstalter-feature/src/jvmMain/.../VeranstalterAuswahlScreen.kt` (verwendet das ViewModel)
|
- `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).
|
- Persistenz/Netzwerk-Zugriffe laufen im Repository. Das ViewModel injiziert das Repository (später per DI).
|
||||||
- State ist die Single Source of Truth pro Screen.
|
- 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
|
#### Vorlage für neue ViewModels
|
||||||
1. `data class UiState(...)`
|
1. `data class UiState(...)`
|
||||||
2. `sealed interface Intent { ... }`
|
2. `sealed interface Intent { ... }`
|
||||||
|
|
|
||||||
|
|
@ -2,7 +2,7 @@
|
||||||
type: Reference
|
type: Reference
|
||||||
status: ACTIVE
|
status: ACTIVE
|
||||||
owner: Frontend Expert
|
owner: Frontend Expert
|
||||||
last_update: 2026-01-15
|
last_update: 2026-04-03
|
||||||
---
|
---
|
||||||
|
|
||||||
# Frontend-Architektur "Meldestelle Portal"
|
# Frontend-Architektur "Meldestelle Portal"
|
||||||
|
|
@ -40,7 +40,9 @@ Das `frontend`-Verzeichnis ist wie folgt strukturiert, um eine klare Trennung de
|
||||||
|
|
||||||
## Wichtige Dokumente
|
## 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-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.
|
* **[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.
|
* **[Offline-First-Architektur](offline-first-architecture.md):** Detaillierte Beschreibung der Offline-First-Strategie.
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user