16 KiB
đ„ïž Client-Architektur - Meldestelle
Ăberblick
Das Client-Modul stellt die vollstĂ€ndige BenutzeroberflĂ€chen-Lösung fĂŒr das Meldestelle-System bereit und liefert eine konsistente Erfahrung auf mehreren Plattformen durch Kotlin Multiplatform- und Compose Multiplatform-Technologien.
Architektur-Highlights:
- đ PlattformĂŒbergreifend - Eine einzige Codebasis fĂŒr Desktop (JVM) und Web (JavaScript) Anwendungen
- đïž Moderne MVVM - Umfassende Model-View-ViewModel-Architektur mit ordnungsgemĂ€Ăer Zustandsverwaltung
- đ§Ș Testabdeckung - Produktionsbereit mit umfassenden Tests ĂŒber alle Module
- đ Optimiert - Build- und Laufzeit-Optimierungen fĂŒr Leistung und Entwicklererfahrung
- đ± Progressive - Web-App mit vollstĂ€ndigen PWA-FĂ€higkeiten fĂŒr mobile und Desktop-Installation
Client-Module Struktur
client/
âââ common-ui/ # Geteilte UI-Komponenten und GeschĂ€ftslogik
â âââ src/commonMain/ # PlattformĂŒbergreifende MVVM-Implementierung
â âââ src/commonTest/ # Umfassende Test-Suite (32 Tests)
â âââ README-CLIENT-COMMON-UI.md # Detaillierte common-ui Dokumentation
âââ desktop-app/ # Native Desktop-Anwendung
â âââ src/jvmMain/ # Desktop-spezifische Implementierung
â âââ src/jvmTest/ # Desktop-Anwendungs-Tests
â âââ README-CLIENT-DESKTOP-APP.md # Detaillierte desktop-app Dokumentation
âââ web-app/ # Progressive Web Application
â âââ src/jsMain/ # Web-spezifische Implementierung mit PWA
â âââ src/jsTest/ # JavaScript-kompatible Tests
â âââ README-CLIENT-WEB-APP.md # Detaillierte web-app Dokumentation
âââ README-CLIENT.md # Diese Ăbersichts-Dokumentation
Architektur-Ăberblick
Multi-Plattform-Strategie
Die Client-Architektur folgt einem geschichteten Ansatz mit maximaler Code-Wiederverwendung:
âââââââââââââââââââââââââââââââââââââââââââââââââââ
â Client-Apps â
âââââââââââââââââââŹââââââââââââââââââââââââââââââââ€
â Desktop-App â Web-App â
â (JVM/Compose) â (Kotlin/JS + PWA) â
âââââââââââââââââââŽââââââââââââââââââââââââââââââââ€
â Common-UI Modul â
â (Geteilte MVVM + GeschĂ€ftslogik) â
âââââââââââââââââââââââââââââââââââââââââââââââââââ€
â Plattformspezifische AbhĂ€ngigkeiten â
â JVM: Ktor-CIO â JS: Ktor-JS â
âââââââââââââââââââââââââââââââââââââââââââââââââââ
MVVM-Implementierung
Die vollstĂ€ndige Client-Architektur implementiert das ordnungsgemĂ€Ăe MVVM-Muster:
- Model: Datenmodelle und Services (
PingService,PingResponse) - View: Compose UI-Komponenten (Desktop + Web)
- ViewModel: Zustandsverwaltung (
PingViewModel,PingUiState)
Vier UI-ZustÀnde Implementierung
GemÀà den trace-bullet-guideline.md Spezifikationen:
- Initial-Zustand:
PingUiState.Initial- Neutrale Nachricht, Button aktiv - Loading-Zustand:
PingUiState.Loading- Ladeindikator, Button deaktiviert - Success-Zustand:
PingUiState.Success- Positive Antwort, Button aktiv - Error-Zustand:
PingUiState.Error- Klare Fehlernachricht, Button aktiv
Schnellstart
Voraussetzungen
| Tool | Version | Zweck |
|---|---|---|
| JDK | 21 (Temurin) | Desktop-Laufzeit und Build-System |
| Node.js | â„ 20 | Web-Entwicklung und JavaScript-Laufzeit |
| Gradle | 8.x (wrapper) | Build-Automatisierung (enthalten) |
Entwicklungs-Befehle
# đ„ïž Desktop-Anwendung
./gradlew :client:desktop-app:run # Desktop-App starten
./gradlew :client:desktop-app:jvmTest # Desktop-Tests ausfĂŒhren
# đ Web-Anwendung
./gradlew :client:web-app:jsBrowserDevelopmentRun # Web-Dev-Server starten
./gradlew :client:web-app:jsTest # Web-Tests ausfĂŒhren
# đ§© Common-UI Modul
./gradlew :client:common-ui:jvmTest # Geteilte Logik-Tests ausfĂŒhren
./gradlew :client:common-ui:build # Geteiltes Modul erstellen
# đ Alle Client-Tests
./gradlew :client:common-ui:jvmTest :client:desktop-app:jvmTest :client:web-app:jsTest
Modul-Dokumentation
đ Detaillierte Dokumentations-Links
Jedes Modul hat eine umfassende Dokumentation, die Architektur, Entwicklung, Testing und Deployment abdeckt:
- Common-UI Modul - Geteilte MVVM-Architektur, Services und GeschÀftslogik
- Desktop-App Modul - Native Desktop-Anwendung mit plattformĂŒbergreifender Distribution
- Web-App Modul - Progressive Web Application mit modernen Web-Standards
đŻ Wichtige Dokumentations-Abschnitte
Jede Modul-README enthÀlt:
- Architektur & Struktur - Detaillierte technische Architektur
- Entwicklungs-Workflow - Setup, Build und Testing-Verfahren
- API-Referenz - VollstÀndige API-Dokumentation mit Beispielen
- Deployment-Leitfaden - Produktions-Deployment-Anweisungen
- Fehlerbehebung - HÀufige Probleme und Lösungen
Build & Packaging
Entwicklungs-Builds
# Alle Client-Module erstellen
./gradlew :client:build
# Einzelne Module erstellen
./gradlew :client:common-ui:build # Geteilte Komponenten
./gradlew :client:desktop-app:build # Desktop-Anwendung
./gradlew :client:web-app:build # Web-Anwendung
Produktions-Packaging
| Plattform | Befehl | Ausgabe |
|---|---|---|
| Desktop | ./gradlew :client:desktop-app:createDistributable |
PlattformĂŒbergreifende Installer |
| Web | ./gradlew :client:web-app:jsBrowserProductionWebpack |
Optimiertes PWA-Bundle |
Distributions-Formate
Desktop-Anwendung:
- Linux:
.debPakete - macOS:
.dmgDisk-Images - Windows:
.msiInstaller
Web-Anwendung:
- Optimierte JavaScript-Bundles
- PWA-Manifest fĂŒr App-Installation
- Service Worker bereit (zukĂŒnftige Erweiterung)
Konfiguration
Umgebungs-Konfiguration
Die Client-Anwendungen unterstĂŒtzen flexible Konfiguration:
| Konfiguration | Desktop | Web | Standardwert |
|---|---|---|---|
| API Basis-URL | System-Eigenschaft | Build-Zeit | http://localhost:8080 |
| Log-Level | JVM-Args | Konsole | INFO |
Desktop-Konfiguration
# Benutzerdefinierte API-URL
./gradlew :client:desktop-app:run -Dmeldestelle.api.url=https://api.production.com
# Entwicklung mit lokalem Backend
./gradlew :client:desktop-app:run -Dmeldestelle.api.url=http://localhost:8080
Web-Konfiguration
Die Web-Anwendungs-Konfiguration wird zur Build-Zeit eingebettet und kann im Build-Prozess angepasst werden.
Test-Strategie
Umfassende Test-Abdeckung
| Modul | Test-Typ | Anzahl | Abdeckung |
|---|---|---|---|
| Common-UI | Unit + Integration | 32 | GeschÀftslogik, MVVM, Services |
| Desktop-App | JVM Integration | 3 | Anwendungsstart, Konfiguration |
| Web-App | JavaScript | 4 | Web-spezifische FunktionalitÀt, PWA |
| Gesamt | PlattformĂŒbergreifend | 39 | VollstĂ€ndige Client-Abdeckung |
Test-AusfĂŒhrung
# Alle Client-Tests ausfĂŒhren
./gradlew :client:common-ui:jvmTest :client:desktop-app:jvmTest :client:web-app:jsTest
# Einzelne Test-Suiten
./gradlew :client:common-ui:jvmTest # Geteilte GeschÀftslogik
./gradlew :client:desktop-app:jvmTest # Desktop-spezifische Tests
./gradlew :client:web-app:jsTest # Web/JS-spezifische Tests
Test-QualitÀts-Metriken
- â MVVM-Architektur: VollstĂ€ndiges Zustandsverwaltungs-Testing
- â Ressourcenverwaltung: Memory-Leak-PrĂ€ventions-Validierung
- â PlattformĂŒbergreifend: Plattformspezifische Integrationstests
- â API-Integration: HTTP-Service und Serialisierungs-Tests
Leistung & QualitÀt
Architektur-Vorteile
đïž MVVM-Implementierung:
- OrdnungsgemĂ€Ăe Trennung der Belange mit testbaren Komponenten
- Reaktive UI-Zustandsverwaltung mit Compose
- Ressourcen-Lebenszyklus-Verwaltung mit automatischer Bereinigung
đ Laufzeit-Leistung:
- Effizientes Speichermanagement durch ordnungsgemĂ€Ăe Disposal-Muster
- Optimierte Build-Konfigurationen fĂŒr beide Plattformen
- Minimaler Overhead mit geteilter GeschÀftslogik
đ§ Entwicklererfahrung:
- Hot Reload fĂŒr Desktop- und Web-Entwicklung
- Umfassende Test-Infrastruktur
- Klare Dokumentation und Fehlerbehebungs-LeitfÀden
QualitÀtssicherung
- Test-Abdeckung: 39 umfassende Tests ĂŒber alle Client-Module
- Architektur-KonformitÀt: 100% MVVM-Muster-Implementierung
- Build-Optimierung: Moderne Gradle-Konfiguration mit AbhÀngigkeitsverwaltung
- PlattformĂŒbergreifend: Konsistentes Verhalten ĂŒber Desktop- und Web-Plattformen
Produktionsbereitschaft
Desktop-Anwendung
â Distributionsbereit:
- PlattformĂŒbergreifende Installer (Linux, macOS, Windows)
- Native Leistung mit JVM-Optimierung
- System-Integrations-FĂ€higkeiten
â Enterprise-Features:
- Konfigurierbare API-Endpunkte
- Logging-Integration bereit
- Ressourcenverwaltung und Bereinigung
Web-Anwendung
â Moderne PWA:
- Progressive Web App mit Installations-UnterstĂŒtzung
- Mobile-First responsives Design
- Offline-FĂ€higkeiten bereit (Service Worker erweiterbar)
â Produktionsstandards:
- Sicherheits-Header (CSP, XSS-Schutz)
- Leistungsoptimierung (Webpack, Caching)
- SEO und Barrierefreiheits-KonformitÀt
API-Integration
Geteilter HTTP-Client
Alle Client-Anwendungen verwenden ein konsistentes API-Integrations-Muster:
// Geteilte Service-Schicht
class PingService(
private val baseUrl: String,
private val httpClient: HttpClient
) {
suspend fun ping(): Result<PingResponse>
fun close()
}
// Plattformspezifische Engines
// Desktop: Ktor CIO Engine
// Web: Ktor JS Engine
API-Konfiguration
| Umgebung | API Basis-URL | Konfigurationsmethode |
|---|---|---|
| Entwicklung | http://localhost:8080 |
Standard-Konfiguration |
| Staging | https://staging-api.example.com |
System-Eigenschaften / Build-Konfiguration |
| Produktion | https://api.example.com |
System-Eigenschaften / Build-Konfiguration |
Migrations- & Upgrade-Leitfaden
Von der vorherigen Architektur
Die Client-Architektur wurde vollstÀndig modernisiert:
Vorher (Komponentenbasiert):
- Vermischte Belange in UI-Komponenten
- Manuelle Zustandsverwaltung
- Speicherleck-Potenzial
- Begrenzte plattformĂŒbergreifende Wiederverwendung
Aktuell (MVVM):
- Saubere Architektur mit getrennten Belangen
- Reaktive Zustandsverwaltung mit Compose
- Automatische Ressourcenbereinigung
- Maximale Code-Wiederverwendung ĂŒber Plattformen
Breaking Changes
Keine - Das Architektur-Upgrade behielt die RĂŒckwĂ€rtskompatibilitĂ€t fĂŒr alle öffentlichen APIs bei.
ZukĂŒnftige Erweiterungen
Roadmap-PrioritÀten
-
Erweiterte PWA-Features
- Service Worker-Implementierung fĂŒr vollstĂ€ndige Offline-UnterstĂŒtzung
- Push-Benachrichtigungs-Integration
- Hintergrund-Sync-FĂ€higkeiten
-
Desktop-Erweiterungen
- Native System-Integration (Benachrichtigungen, Dateidialoge)
- Auto-Update-Mechanismen
- Erweiterte Logging-Konfiguration
-
Test-Erweiterung
- End-to-End-Testing ĂŒber Plattformen
- Visual Regression Testing
- Performance-Benchmarking
-
Monitoring-Integration
- Fehlerberichterstattung und Analytik
- Performance-Ăberwachung
- Benutzerverhalten-Analytik
Fehlerbehebung
HĂ€ufige Probleme ĂŒber alle Plattformen
| Problem | Plattform | Lösung |
|---|---|---|
| API-Verbindungsfehler | Alle | Basis-URL-Konfiguration und NetzwerkkonnektivitĂ€t ĂŒberprĂŒfen |
| Build-Fehler | Alle | Build-Verzeichnis bereinigen: ./gradlew clean |
| Test-AusfĂŒhrungsprobleme | Alle | Plattformspezifische Anforderungen prĂŒfen (JDK, Node.js) |
| Hot Reload funktioniert nicht | Web | Dev-Server neu starten, File Watcher prĂŒfen |
Plattformspezifische Probleme
Desktop:
- Fenster wird nicht angezeigt â Display-Einstellungen und Fensterzustand prĂŒfen
- SLF4J-Warnungen â Logback-AbhĂ€ngigkeit hinzufĂŒgen (nicht kritisch)
Web:
- WeiĂer Bildschirm beim Laden â Browser-Konsole auf JavaScript-Fehler prĂŒfen
- PWA installiert nicht â HTTPS und manifest.json verifizieren
Debug-Befehle
# Umfassende Build-Analyse
./gradlew :client:build --scan
# AbhÀngigkeitskonflikt-Analyse
./gradlew :client:dependencies
# AusfĂŒhrliche Test-AusfĂŒhrung
./gradlew :client:common-ui:jvmTest --info
Mitwirken
Entwicklungs-Workflow
-
Umgebung einrichten
# Voraussetzungen ĂŒberprĂŒfen java -version # Sollte JDK 21 anzeigen node --version # Sollte Node.js â„ 20 anzeigen # Erstellen und validieren ./gradlew :client:build -
Entwicklungsprozess
# Ăblicher Entwicklungszyklus ./gradlew :client:common-ui:jvmTest # Geteilte Logik testen ./gradlew :client:desktop-app:run # Desktop-Integration testen ./gradlew :client:web-app:jsTest # Web-KompatibilitĂ€t testen -
QualitÀtssicherung
# VollstÀndige Test-Suite ./gradlew :client:common-ui:jvmTest :client:desktop-app:jvmTest :client:web-app:jsTest # Architektur-Validierung ./gradlew :client:build --scan
Code-Standards
- Architektur: MVVM-Muster und Trennung der Belange beibehalten
- Testing: Tests fĂŒr neue FunktionalitĂ€t ĂŒber alle betroffenen Module hinzufĂŒgen
- Dokumentation: Modul-spezifische READMEs fĂŒr Ănderungen aktualisieren
- KompatibilitĂ€t: Sicherstellen, dass Ănderungen auf Desktop- und Web-Plattformen funktionieren
Pull Request Checkliste
- Alle bestehenden Tests bestehen ĂŒber alle Client-Module
- Neue FunktionalitÀt beinhaltet angemessene Test-Abdeckung
- MVVM-Architektur-Muster beibehalten
- PlattformĂŒbergreifende KompatibilitĂ€t verifiziert
- Modul-spezifische Dokumentation aktualisiert
- Leistungsauswirkungen bewertet und dokumentiert
Kontakt & Support
Dokumentations-Struktur
FĂŒr detaillierte Informationen zu spezifischen Modulen:
- Common-UI: README-CLIENT-COMMON-UI.md
- Desktop-App: README-CLIENT-DESKTOP-APP.md
- Web-App: README-CLIENT-WEB-APP.md
Schnellreferenz
| Aufgabe | Befehl |
|---|---|
| Desktop-App starten | ./gradlew :client:desktop-app:run |
| Web-Dev-Server starten | ./gradlew :client:web-app:jsBrowserDevelopmentRun |
| Alle Tests ausfĂŒhren | ./gradlew :client:common-ui:jvmTest :client:desktop-app:jvmTest :client:web-app:jsTest |
| FĂŒr Produktion erstellen | ./gradlew :client:build |
| Desktop-Installer erstellen | ./gradlew :client:desktop-app:createDistributable |
| Web-Produktions-Bundle erstellen | ./gradlew :client:web-app:jsBrowserProductionWebpack |
Client-Status: â Produktionsbereit Architektur: â MVVM VollstĂ€ndig Test-Abdeckung: â Umfassend (39 Tests) PlattformĂŒbergreifend: â Desktop + Web PWA Dokumentation: â VollstĂ€ndig
Zuletzt aktualisiert: 16. August 2025