- Added `meldestelle-desktop` module using JVM/Compose Desktop, registered in `settings.gradle.kts`. - Integrated new screens and desktop navigation into core: `Veranstaltungen`, `TurnierDetail`, etc. - Expanded backend with `ExposedFunktionaerRepository` in `officials-infrastructure`. - Completed ADRs for bounded context mapping (`ADR-0014`) and context map (`ADR-0015`). - Updated and extended project documentation with session logs and architecture decisions. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
6.3 KiB
6.3 KiB
| date | type | agents | status |
|---|---|---|---|
| 2026-03-24 | Session Log | Frontend Expert, Curator | COMPLETED |
Session Log – KMP/Compose Desktop Shell aufsetzen
🎨 [Frontend Expert] & 🧹 [Curator] | 24. März 2026
Zusammenfassung der Session
Aufsetzen der dedizierten Desktop-Shell meldestelle-desktop als eigenständiges
JVM/Compose-Desktop-Modul gemäß Desktop-First-Strategie (ADR-0009) und Vision_03-Design-Baseline.
Durchgeführte Aktivitäten
1. Neues Modul: frontend/shells/meldestelle-desktop
- Eigenständige Desktop-Shell, getrennt vom Web-Portal (
meldestelle-portal) - Reines JVM-Modul (kein JS/WASM) – Desktop-First gemäß MASTER_ROADMAP
- In
settings.gradle.ktsregistriert compileKotlinJvm✅ BUILD SUCCESSFUL
2. Projektstruktur
frontend/shells/meldestelle-desktop/
├── build.gradle.kts # JVM-only, compose.desktop, nativeDistributions
└── src/jvmMain/kotlin/at/mocode/desktop/
├── main.kt # application {} Entry-Point, Koin-Init, Window
├── DesktopApp.kt # Login-Gate + Haupt-Composable
├── di/
│ └── DesktopModule.kt # Koin: DesktopNavigationPort, CurrentUserProvider, DeepLinkHandler
├── navigation/
│ └── DesktopNavigationPort.kt # StateFlow-basierte Navigation
└── screens/
├── DesktopMainLayout.kt # Sidebar (220dp) + Content-Bereich
├── PlaceholderContent.kt # Wiederverwendbarer Platzhalter
├── VeranstaltungenScreen.kt # Übersicht + "Neue Veranstaltung"-Button
├── VeranstaltungNeuScreen.kt # Tabs: Übersicht | Stammdaten* | Organisation | Preisliste
├── VeranstaltungDetailScreen.kt # Übersicht-Tab + Turniere-Section
├── TurnierNeuScreen.kt # Tabs: Übersicht | Stammdaten | Organisation | Bewerbe⭐* | Preisliste
├── TurnierDetailScreen.kt # Bewerbe-Tab integriert NennungsMaske (nennung-feature)
└── AktorScreens.kt # Reiter, Pferde, Funktionäre, Meisterschaften, Cups
3. Navigation gemäß Vision_03
Sidebar-Navigation mit 6 Einträgen (links, 220dp, Material3 surfaceVariant):
| Eintrag | Route | Status |
|---|---|---|
| Veranstaltungen | /veranstaltungen |
✅ Screen implementiert |
| Reiter | /reiter |
✅ Placeholder |
| Pferde | /pferde |
✅ Placeholder |
| Funktionäre | /funktionaere |
✅ Placeholder |
| Meisterschaften | /meisterschaften |
✅ Placeholder (Phase 2+) |
| Cups | /cups |
✅ Placeholder (Phase 2+) |
| Logout | — | ✅ Löscht Token, zurück zu Login |
4. Neue AppScreen-Einträge (core/navigation)
Folgende Screens wurden in AppScreen.kt ergänzt:
Veranstaltungen,VeranstaltungNeu,VeranstaltungDetail(id)TurnierNeu(veranstaltungId),TurnierDetail(veranstaltungId, turnierId)Reiter,Pferde,Funktionaere,Meisterschaften,Cups
5. Nennungs-Integration
TurnierDetailScreen→ Bewerbe-Tab (⭐ Standard-Tab) integriertNennungsMaskeausnennung-feature- Callbacks für Startliste, Ergebnisse, Abrechnung als TODO vorbereitet
Erstellte / Aktualisierte Dokumente
| Dokument | Aktion | Beschreibung |
|---|---|---|
frontend/shells/meldestelle-desktop/build.gradle.kts |
✅ NEU | JVM-only Shell, compose.desktop, nativeDistributions (Deb/Msi/Dmg) |
frontend/shells/meldestelle-desktop/src/.../main.kt |
✅ NEU | application {} Entry-Point, Koin-Init, Window 1400×900 |
frontend/shells/meldestelle-desktop/src/.../DesktopApp.kt |
✅ NEU | Login-Gate, delegiert an DesktopMainLayout |
frontend/shells/meldestelle-desktop/src/.../di/DesktopModule.kt |
✅ NEU | Koin-Modul mit Navigation, CurrentUserProvider, DeepLinkHandler |
frontend/shells/meldestelle-desktop/src/.../navigation/DesktopNavigationPort.kt |
✅ NEU | StateFlow-Navigation |
frontend/shells/meldestelle-desktop/src/.../screens/*.kt |
✅ NEU | 8 Screen-Dateien (Layout, Placeholders, Veranstaltung/Turnier-Flow) |
frontend/core/navigation/.../AppScreen.kt |
✅ ERWEITERT | 10 neue Desktop-Screens ergänzt |
settings.gradle.kts |
✅ ERWEITERT | :frontend:shells:meldestelle-desktop registriert |
docs/01_Architecture/MASTER_ROADMAP.md |
✅ AKTUALISIERT | Frontend-Expert-Tasks als abgeschlossen markiert |
Wichtige Entscheidungen
- Eigenständiges Modul statt Erweiterung des Portal-Shells → saubere Trennung Desktop/Web
- Login-Gate in
DesktopApp.kt→ Desktop startet immer mit Login, kein Landing-Screen PrimaryTabRowstatt deprecatedTabRowverwendetNennungsMaskedirekt im Bewerbe-Tab desTurnierDetailScreenintegriert
Nächste Schritte (Empfehlung)
- 👷 [Backend Developer]:
DomVeranstaltung,DomTurnier,DomBewerb,DomAbteilungimplementieren - 🎨 [Frontend Expert]:
VeranstaltungenScreenmit echten Daten aus Repository befüllen - 🎨 [Frontend Expert]: Startlisten- und Ergebnisse-Screens implementieren (competition-context)
- 🎨 [Frontend Expert]: Formular-Felder für
VeranstaltungNeuScreenundTurnierNeuScreenausbauen
Session-Dauer: 24. März 2026 Curator: Junie (KI-Agent)