chore(frontend): refactor navigation and DI setup, remove unused shared module

- Replaced `initKoin` with `startKoin` for DI initialization consistency across platforms.
- Introduced `StateNavigationPort` with `StateFlow` to streamline navigation state management.
- Migrated `AppScreen` to sealed class with route mapping for better navigation handling.
- Deleted unused `frontend/shared` module and removed related dependencies from build files.
- Cleaned up legacy navigation and Redux-related code, aligning with MVVM architecture.
This commit is contained in:
2026-02-01 13:46:39 +01:00
parent 77c20bf2ba
commit f78563f8c8
41 changed files with 186 additions and 187 deletions
@@ -0,0 +1,57 @@
---
title: Frontend Cleanup & Architecture Status Report
date: 2026-01-31
author: Frontend Expert & Curator
status: Final
tags: [frontend, architecture, cleanup, kmp, compose]
---
# 🧹 Frontend Cleanup & Architecture Status Report
## 1. Executive Summary
Dieses Dokument fasst die umfangreichen Aufräum- und Refactoring-Arbeiten am Frontend ("Meldestelle Portal") zusammen. Ziel war es, technischen Ballast ("Dead Code") zu entfernen, die Architektur zu vereinheitlichen (MVVM + Clean Architecture) und die Kompilierbarkeit über alle Plattformen (JVM/Desktop & JS/Web) sicherzustellen.
**Ergebnis:** Der Build ist erfolgreich (`BUILD SUCCESSFUL`). Das Frontend ist nun schlank, wartbar und bereit für die Feature-Entwicklung.
## 2. Durchgeführte Maßnahmen
### 2.1. Entfernung von "Dead Code"
* **`frontend/shared` gelöscht:** Dieses Modul enthielt einen kompletten, ungenutzten Redux-Stack (`AppStore`, `AppAction`, etc.), der im Widerspruch zur genutzten MVVM-Architektur stand.
* **Legacy-Komponenten entfernt:** Veraltete UI-Komponenten (z.B. `NotificationCard.kt`) und doppelte Navigations-Konzepte wurden bereinigt.
### 2.2. Architektur-Konsolidierung
* **MVVM als Standard:** Die Anwendung folgt nun strikt dem MVVM-Muster mit Kotlin Coroutines (`StateFlow`) und Koin für Dependency Injection.
* **Clean Architecture:** Das `ping-feature` dient als Referenz-Implementierung mit klarer Trennung von `Presentation`, `Domain` und `Data` Layer.
* **Navigation:** Zentralisierung der Navigation auf `AppScreen` (Sealed Class) im Core-Modul.
### 2.3. Build & Plattform-Support
* **Koin-Initialisierung:** Korrektur der Koin-Start-Logik für JVM (`startKoin` statt `initKoin`) und JS (`startKoin` im `main.kt`).
* **Gradle-Konfiguration:** Bereinigung der `build.gradle.kts` Dateien und Entfernung von Abhängigkeiten zu gelöschten Modulen.
* **Web-Support:** Sicherstellung, dass die Web-Version (Kotlin/JS) fehlerfrei baut und die Datenbank (SQLDelight Wasm) korrekt initialisiert.
## 3. Modul-Status (Ist-Zustand)
| Modul | Status | Beschreibung |
| :--- | :--- | :--- |
| **`core/navigation`** | ✅ Grün | Zentrale Routen (`AppScreen`, `Routes`), DeepLink-Handling. Sauber. |
| **`core/design-system`** | ✅ Grün | UI-Komponenten (`AppTheme`, `Buttons`, `Inputs`). Modern (Material 3). |
| **`core/auth`** | ✅ Grün | Login-Logik, Token-Manager, API-Client. Funktional. |
| **`core/network`** | ✅ Grün | Zentraler `HttpClient` mit Auth-Interceptor. |
| **`core/sync`** | ✅ Grün | Generischer `SyncManager` für Offline-First. |
| **`core/local-db`** | ✅ Grün | SQLDelight Setup für JVM & Web. |
| **`features/ping`** | ✅ Grün | **Blueprint-Feature**. Zeigt Best Practices (Sync, UI, DI). |
| **`shells/portal`** | ✅ Grün | Einstiegspunkt (`MainApp`). Verbindet alle Module. |
## 4. Offene Punkte & Nächste Schritte
Obwohl der technische Zustand nun exzellent ist, gibt es logische nächste Schritte für die Produktentwicklung:
1. **Feature-Rollout:** Implementierung des `members-feature` (Mitglieder) basierend auf dem `ping-feature` Blueprint.
2. **Testing:** Etablierung von Unit-Tests für die Core-Logik (Auth, Sync) und UI-Tests für kritische Flows.
3. **Backend-Alignment:** Sicherstellung, dass die Backend-Services (Registry) die erwarteten Sync-Endpunkte bereitstellen.
## 5. Fazit
Das Frontend-Fundament ist stabil. Die "technischen Schulden" aus der Experimentierphase (Redux vs. MVVM) sind getilgt. Das Team kann sich nun voll auf die Implementierung der fachlichen Anforderungen konzentrieren.
---
*Gez. Frontend Expert & Curator*