Streamlined Keycloak configurations with defaults for development and production in `.env`. Added health checks and improved environment variable documentation with comments to differentiate local and server deployments. Ensured compatibility with pre-built registry images.
5.1 KiB
| type | status | owner |
|---|---|---|
| Reference | ACTIVE | Lead Architect |
Repository-Architektur (MP-22)
WARNUNG (Januar 2026): Dieses Dokument ist veraltet. Die hier beschriebene "Soll"-Struktur wurde teilweise umgesetzt, aber wichtige strategische Änderungen sind in den Statusberichten vom Januar 2026 dokumentiert. Dieses Dokument dient nur noch als historischer Referenzpunkt.
Aktuelle Informationen finden Sie in:
docs/90_Reports/Backend_Status_Report_01-2026.mddocs/90_Reports/Frontend_Status_Report_01-2026.md- Den ADRs in
docs/01_Architecture/adr/
Zusammenfassung der wichtigsten Änderungen (Januar 2026)
- Backend: Ein Konflikt zwischen Spring Boot und Spring Cloud wurde durch einen Downgrade von Spring Cloud gelöst.
- Frontend: Die Persistenz-Strategie wurde von Room auf SQLDelight umgestellt, um echte Cross-Platform-Fähigkeit (insbesondere für Web/Wasm) zu ermöglichen.
- Modul-Struktur: Das
core:core-utils-Modul wurde bereinigt, um eine strikte Trennung zwischen KMP-kompatiblem Code und JVM-spezifischem Code zu gewährleisten. JVM-spezifischer Code wurde in das neue Modul:backend:infrastructure:persistenceverschoben. - Build-System: Die
libs.versions.tomlwurde stark refaktoriert und nutzt nun Bundles zur Vereinfachung der Gradle-Dateien.
Ursprünglicher Inhalt (Veraltet)
Zielstruktur (Top-Level)
backend/ Gateway, Discovery (optional), Services gateway Spring Cloud Gateway discovery services frontend/ KMP Frontend shells Ausführbare Apps (Assembler) features Vertical Slices (kein Feature→Feature) core Shared Foundation (Design-System, Network, Local-DB, Auth, Domain) design-system domain network local-db navigation docker/ Docker Compose, .env.example, Monitoring-/Core-Konfiguration docs/ Architektur, ADRs, C4-Modelle, Guides adr Architecture Decision Records (ADRs) c4 C4-Diagramme (PlantUML Quellen)
Ist → Soll Mapping (erste Tranche)
-
Frontend
- clients/app → frontend/shells/meldestelle-portal (verschieben in Folge-Commit)
- clients/shared/common-ui → frontend/core/design-system (verschieben in Folge-Commit)
- clients/shared/navigation → frontend/core/navigation (verschieben in Folge-Commit)
-
Backend
- infrastructure/gateway → backend/gateway (verschieben in Folge-Commit)
- services/* → backend/services/* (verschieben in Folge-Commit)
- Discovery (falls genutzt) → backend/discovery
-
Docker
- compose.yaml → docker/docker-compose.yml (neu angelegt, Makefile angepasst)
- .env Handling → docker/.env.example (neu, als Template)
Build/Gradle
- settings.gradle.kts bleibt vorerst unverändert. Modul-Verschiebungen folgen in einem separaten Schritt mit angepassten include-Pfaden.
- Version Catalog (gradle/libs.versions.toml) bleibt die einzige Quelle der Versionswahrheit.
Richtlinien (Kurzfassung)
- Features kommunizieren ausschließlich über Routen (Navigation) und Shared-Modelle in frontend/core/domain.
- Kein manueller Authorization-Header – nur der DI-verwaltete apiClient aus frontend/core/network (Koin Named Binding).
- SQLDelight als Offline-SSoT: Schema/Migrationen zentral versionieren, UI liest stets lokal und synchronisiert im Hintergrund.
DI-Policy & Architecture Guards (MP-23)
-
DI-Policy (Frontend)
- Http‑Requests erfolgen ausschließlich über den via Koin bereitgestellten
apiClient(named Binding) aus:frontend:core:network. - Manuelles Setzen des
Authorization‑Headers ist verboten. Token‑Handling wird zentral imapiClientkonfiguriert (Auth‑Plugin/Interceptor). - Basis‑URL wird plattformspezifisch aufgelöst:
- JVM/Desktop: Env
API_BASE_URL(Fallbackhttp://localhost:8081). - Web/JS:
globalThis.API_BASE_URL(z. B. perindex.htmloder Proxy), sonstwindow.location.origin, Fallbackhttp://localhost:8081.
- JVM/Desktop: Env
- Http‑Requests erfolgen ausschließlich über den via Koin bereitgestellten
-
Architecture Guards (Frontend‑Scope)
- Root‑Task
archGuardsbricht den Build ab, wenn verbotene Muster gefunden werden (manuelleAuthorization‑Header). Tests sind ausgenommen; Backend ist ausgenommen. - Statische Analyse verfügbar über
detektundktlintCheck; AggregatorstaticAnalysisführt alles zusammen.
- Root‑Task
-
Hinweise für Features
- Features importieren keine anderen Features (Kommunikation über Navigation + Shared‑Domain‑Modelle). Eine explizite Detekt‑Regel folgt.
- Netzwerkzugriffe in Features nutzen Koin über die App‑Shell (DI‑Bootstrap). Für schrittweise Migration kann eine Factory den
apiClientoptional beziehen.
Nächste Schritte (MP-22 Folgetasks)
- Physisches Verschieben der Frontend-Module gemäß Mapping und Anpassung von settings.gradle.kts.
- Physisches Verschieben der Backend-Komponenten in backend/* inkl. evtl. Package-Pfade, sofern notwendig.
- Ergänzung von docker-compose.services.yml und docker-compose.clients.yml mit echten Overlays.
- Erstellen der ersten ADRs unter
docs/01_Architecture/adr/(Koin, SQLDelight, Optimistic Locking, Freshness UI, Core Domain).
Hinweis: ADRs liegen ab sofort zentral unter docs/01_Architecture/adr/. C4-Diagramme liegen unter docs/01_Architecture/c4/.