- Removed `AbteilungViewModel`, `BewerbAnlegenViewModel`, `BewerbViewModel`, and `CreateBewerbWizardScreen`.
- Cleaned up related imports and unused domain models.
- **Core Updates:**
- Expanded `SyncEvent` model with additional fields (`eventId`, `sequenceNumber`, `originNodeId`, `createdAt`, `checksum`, `schemaVersion`) for improved event tracking and validation.
- Updated event classes (`PingEvent`, `PongEvent`, `DataChangedEvent`, `DataRequestEvent`) to align with the extended `SyncEvent`.
- **Frontend Enhancements:**
- Enhanced `BewerbViewModel` to handle sync events (`PingEvent`, `DataChangedEvent`) and observe connected peers using `SyncManager`.
- Added support for
- Removed unnecessary imports across multiple modules for cleaner code.
- Updated `kotlinx.coroutines.delay` to use `Duration.milliseconds` for improved readability and type safety in `SyncManager`.
- **Core Updates:**
- Implemented `P2pSyncService` interface with platform-specific WebSocket implementations (`JvmP2pSyncService` and no-op for JS).
- Developed `SyncEvent` sealed class hierarchy to handle peer synchronization events (e.g., `PingEvent`, `PongEvent`, `DataChangedEvent`, etc.).
- **Frontend Integration:**
- Introduced `SyncManager` to manage peer discovery and synchronization, coupled with `NetworkDiscoveryService`.
- Updated dependency injection to include `syncModule` for platform-specific sync service initialization.
- Enhanced `BewerbViewModel` to support new sync capabilities, including observing sync events and UI updates for connected peers.
- **Backend Enhancements:**
- Added ZNS-specific fields (`zns_nummer`, `zns_abteilung`) to Bewerb table for idempotent imports.
- Introduced import ZNS logic to handle duplicates and align with SyncManager updates.
- **UI Improvements:**
- Enhanced `TurnierBewerbeTab` with updated dialogs (ZNS imports, sync status) and dynamic previews.
- Improved network syncing feedback and error handling in frontend components.
- **DB Changes:**
- Added migration for new column fields in the Bewerb table with relevant indexing for ZNS import optimizations.
- **Network Discovery Service:**
- Added platform-specific `DiscoveryModule` with JmDNS-based `JmDnsDiscoveryService` for JVM and no-op implementation for JS.
- Implemented service and device discovery using mDNS to enable peer-to-peer synchronization within LAN.
- Registered the module in Koin for dependency injection and integrated it with `networkModule`.
- **Frontend Integration:**
- Enhanced `BewerbViewModel` with intents and actions for starting, stopping, and refreshing network scans.
- Introduced polling for discovered services during an active scan.
- **UI Additions:**
- Added a `NetworkDiscoveryPanel` in `TurnierBewerbeTab` to display discovered services and indicate scan state.
- Updated action buttons to include toggle functionality for network scans.
- Added `TestExposedConfiguration` to connect Exposed with Spring `DataSource` in the `test` profile.
- Downgraded `springdoc` version from `3.0.0` to `2.8.9` for Spring Boot 3.x compatibility.
- Applied `@ActiveProfiles("test")` to `EntriesIsolationIntegrationTest`.
- Updated roadmap documentation to reflect bugfix and test success.
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
- Add `ApiRoutes` for central backend routing configuration.
- Implement `DefaultVeranstalterRepository` and `DefaultTurnierRepository` with Ktor clients.
- Add domain models (`Turnier`, `Bewerb`, `Abteilung`, `Veranstalter`) and respective repository interfaces.
- Replace fake VeranstalterRepository with real implementation.
- Update DI with `veranstalterModule` and HTTP client injection.
- Simplify TokenProvider and update HttpClient setup (timeouts, retries, logging).
- Mark roadmap tasks B-2 as partially complete.
- Deleted obsolete `meldestelle-portal` module, including all associated screens, configurations, tests, and assets.
- Includes removal of Compose multiplatform dependencies in `build.gradle.kts`.
- Cleaned up redundant files such as `AppPreview`, `AuthStatusScreen`, `DashboardScreen`, and associated core implementations.
- Streamlined module references in `settings.gradle.kts`.
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
- Streamlined `resolveApiBaseUrl` and `resolveKeycloakUrl` by introducing `globalScope` as a reusable property.
- Improved readability and maintainability by reducing redundant code and enhancing structure.
- Removed outdated comments and polished behavior for fallback mechanisms.
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
- Deleted `sqlite.worker.js` and `wasi-dummy.js` to clean up outdated resources.
- Updated `Config.kt` to use a shared `Json` instance for deserialization.
- Revised service worker for cache versioning and to bypass caching of `web-app.js` and `.map` files.
- Enhanced debug logging and improved handling of uncaught errors in new `sqlite.worker.js`.
Signed-off-by: Stefan Mogeritsch <stefan.mo.co@gmail.com>
Replaced multi-stage Docker builds with a hybrid approach that pre-builds frontend artifacts locally and copies them into the container. Removed Kotlin Multiplatform configurations from the root project to resolve NodeJsRootPlugin conflicts. Adjusted `.dockerignore` to allow pre-built artifacts and increased Gradle/Kotlin daemon memory for faster builds. Updated Caddyfile for runtime stability and added documentation for new build processes.
- Updated Gradle version in `.env`, Dockerfiles, and wrapper to 9.3.1.
- Replaced alias-based application of `kotlinMultiplatform` plugin with direct `id` usage in subprojects to resolve "Plugin loaded multiple times" error.
- Applied centralized plugin management and Gradle daemon optimizations to improve Docker build stability and address KMP classloading issues.
Eliminated `browser {}` blocks from core library modules to resolve "Plugin loaded multiple times" error in Kotlin/JS Gradle builds. Adjusted to support a cleaner, centralized JS target configuration. Documented the root cause and workaround in troubleshooting logs.
Introduced `config.json` runtime configuration fetch mechanism to support the "Build Once, Deploy Everywhere" pattern. Replaced NGINX with Caddy for SPA deployment, enabling SPA routing, security headers, and static asset management. Updated Gradle and Kotlin/JS build configurations to align with the new runtime environment. Enhanced Dockerfile and health checks for optimized CI/CD workflows and improved SPA delivery.
- Removed deprecated `NotificationCard` component due to dependency on an outdated presentation layer.
- Translated comments and documentation to German for improved localization across `core.auth`, `ping-feature`, and `network`.
- Standardized comment formatting, improved doc clarity, and ensured consistent API documentation in all modules.
Improved `PlatformConfig` API base URL resolution with enhanced logging and fallback logic. Revised database initialization with version checks, schema migration, and error handling. Updated Keycloak configuration to enable `Direct Access Grants` and refine CORS/redirect settings. Adjusted Webpack proxy settings for correct API routing.
- Added `sqlite.worker.js` for custom SQLite Web Worker setup compatible with SQLDelight.
- Enhanced Webpack configuration in `sqlite-config.js` for SQLite-related assets and dynamic path resolution.
- Updated Koin `apiClient` setup to dynamically inject Authorization headers using the `HttpSend` plugin.
- Fixed Keycloak realm configuration to include new local URLs (`http://localhost:8080`).
- Removed redundant Web Worker copy tasks from Gradle and adjusted Kotlin code for streamlined worker creation.
- Deleted `dummy.js` and its usage for sqlite-wasm integration as custom Webpack adjustments are no longer necessary.
- Removed outdated Webpack configuration files: `ignore-sqlite-wasm.js`, `ignore-sqlite-wasm-critical-dependency.js`, and `sqljs-fix.js`.
- Introduced `sqlite-config.js` for simplified and streamlined sqlite-wasm and Skiko Webpack configuration.
- Minor code formatting adjustments across frontend modules for improved consistency.
Updated Dockerfiles to fix frontend path references after refactoring. Refactored `networkModule` to replace the `Auth` plugin with manual auth header injection for enhanced logout support. Adjusted Keycloak realm configuration to set default credentials as non-temporary. Improved error handling in `AuthApiClient` with detailed response messages.
Deactivated WebAssembly configurations in relevant modules due to stability concerns with JS compatibility. Updated Gradle scripts to comment out related dependencies and tasks while preserving the initial implementation for future reactivation.
Enabled Wasm target across all relevant modules and removed conditional enablement logic. Refactored `core:core-utils` to move JVM-specific code to a new `backend:infrastructure:persistence` module for strict KMP compliance. Updated dependencies, adjusted Gradle configurations, and resolved circular dependencies.
Deleted the unused `compose.hardcoded.yaml` file. Updated Gradle build scripts to resolve issues with Jackson and Resilience4j library bundles by explicitly specifying direct dependencies. Removed the `sqldelight` plugin and related dependencies from `local-db` module. Consolidated `docker-compose.yaml` to standardize restart policies. Adjusted `.env` to include cautions for sensitive data and rechecked Java version comments.
- Simplified test assertions by removing redundant type casting in `ResultTest`.
- Improved Redis mock behavior and verification leniency in `RedisDistributedCacheTest`.
- Updated dependency versions in `libs.versions.toml` (e.g., downgraded `ktor` and adjusted `composeMultiplatform`).
- Refined Gradle build scripts for consistent compiler args and testing configurations (e.g., disabled browser tests in frontend).
- Addressed mocking issues in `RedisDistributedCacheTest` to prevent `NoSuchMethodError`.
- Fixed package imports due to framework updates in Spring Boot and Micrometer-related components.
Removed redundant `jvmToolchain(25)` declarations across module build scripts, as the JVM toolchain is now managed centrally. Added comments for clarity.
- Entfernen/Deprecaten: `frontend/features/auth-feature/.../AuthenticatedHttpClient.kt` und alle manuellen `Authorization`‑Header‑Setzungen.
- Stattdessen: DI‑`apiClient` via Koin injizieren (`single(named("apiClient"))`) und Token‑Anreicherung über Ktor `Auth` Plugin (Bearer) verdrahten.
- Build‑Guard ergänzen: Auch Vorkommen von `HttpHeaders.Authorization` erkennen.