Some checks failed
Build and Publish Docker Images / build-and-push (., backend/infrastructure/gateway/Dockerfile, api-gateway, api-gateway) (push) Failing after 2m56s
Build and Publish Docker Images / build-and-push (., backend/services/ping/Dockerfile, ping-service, ping-service) (push) Failing after 3m3s
Build and Publish Docker Images / build-and-push (., config/docker/caddy/web-app/Dockerfile, web-app, web-app) (push) Failing after 2m49s
Build and Publish Docker Images / build-and-push (., config/docker/keycloak/Dockerfile, keycloak, keycloak) (push) Successful in 2m13s
- Deleted unused screens including `AdminUebersichtScreen`, `AktorScreens`, `StammdatenImportScreen`, `TurnierDetailScreen`, and supporting components such as `PlaceholderContent`. - Cleaned up references and placeholders to streamline module structure. Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
3.7 KiB
3.7 KiB
Session Log: Frontend-Architektur-Refactor
Datum: 26.03.2026 Agent: 🏗️ Lead Architect Dauer: ~1 Session Trigger: Inkonsistente Schichttrennung — fachliche Screens lagen im Shell statt in Features
Problem
Die Desktop-App hatte alle Screen-Composables direkt im Shell-Modul (meldestelle-desktop/screens/).
Das verletzt das Shell-Feature-Core-Pattern:
- Shell enthielt Fachlogik (Veranstalter, Veranstaltung, Turnier, ZNS)
zns-import-featurewar gespalten: ViewModel im Feature, Screen im ShellSharedUiModels(Enums, Badges) lagen im Shell statt incore/design-system
Durchgeführte Änderungen
Neue Feature-Module
| Modul | Inhalt |
|---|---|
frontend/features/veranstalter-feature |
VeranstalterAuswahlScreen, VeranstalterDetailScreen, VeranstalterNeuScreen |
frontend/features/veranstaltung-feature |
AdminUebersichtScreen, VeranstaltungenScreen, VeranstaltungDetailScreen, VeranstaltungNeuScreen, VeranstaltungUebersichtScreen |
frontend/features/turnier-feature |
TurnierDetailScreen, TurnierNeuScreen, alle 8 Turnier-Tabs, AktorScreens |
Verschobene Dateien
| Von | Nach |
|---|---|
shells/.../screens/zns/StammdatenImportScreen.kt |
features/zns-import-feature/.../presentation/ |
shells/.../screens/shared/SharedUiModels.kt |
core/design-system/.../models/ |
shells/.../screens/shared/PlaceholderContent.kt |
core/design-system/.../models/ |
shells/.../screens/veranstalter/*.kt |
features/veranstalter-feature/.../presentation/ |
shells/.../screens/veranstaltung/*.kt |
features/veranstaltung-feature/.../presentation/ |
shells/.../screens/turnier/*.kt |
features/turnier-feature/.../presentation/ |
shells/.../screens/aktor/AktorScreens.kt |
features/turnier-feature/.../presentation/ |
Konfiguration
settings.gradle.kts: 3 neue Feature-Module eingetragenshells/meldestelle-desktop/build.gradle.kts: 3 neue Feature-Abhängigkeitenshells/.../DesktopMainLayout.kt: Imports auf neue Feature-Packages umgestelltshells/.../ScreenPreviews.kt: Imports auf neue Feature-Packages umgestellt
Shell nach Refactor
Der Shell enthält jetzt nur noch:
main.kt— Koin-Init, WindowDesktopApp.kt— Root-Composable, Login-Gatedi/DesktopModule.kt— Shell-DInavigation/DesktopNavigationPort.kt— Navigation-Portscreens/layout/DesktopMainLayout.kt— Layout + Navigationscreens/preview/ScreenPreviews.kt— IDE-Previews
Neue Dokumentation
docs/06_Frontend/ARCHITECTURE_RULES.md— verbindliche Architektur-Richtlinien mit Checkliste und Anti-Patterns
Offene Punkte
- Gradle-Sync erforderlich, damit Typesafe-Accessors für neue Module generiert werden
ArchitectureTest(falls vorhanden) sollte die neuen Schichtgrenzen prüfen
Lessons Learned
Architektur-Regeln müssen schriftlich und verbindlich festgehalten werden, bevor Code geschrieben wird.
Die ARCHITECTURE_RULES.md ist ab sofort Pflichtlektüre für jeden Agenten vor dem ersten Commit.