Commit Graph

375 Commits

Author SHA1 Message Date
ead48cf9f5 chore(build): update JVM target to 25, enforce stable kotlinx-serialization-json, and add bundle size budget checks
- Updated Kotlin compiler and JVM toolchain to target JVM 25 in all subprojects.
- Enforced stable `kotlinx-serialization-json:1.7.3` version to prevent resolution issues.
- Introduced JS bundle size budget checks for frontend shells with gzip support and reporting.
- Refined and reorganized Gradle module includes in `settings.gradle.kts`.
- Removed legacy and redundant dependency configurations for improved clarity.
2026-01-03 22:53:32 +01:00
3d3c9e2241 refactor(build): remove unused files and adjust JVM toolchain to Java 24
Deleted `.fleet/receipt.json`, `.vscode/settings.json`, and unused `CLASSPATH` references from Gradle scripts. Updated JVM toolchain configuration from Java 25 to Java 24 in `build.gradle.kts` for consistency.
2026-01-03 15:49:09 +01:00
181e4e9733 refactor(build): remove forced kotlinx-serialization-json version constraint 2026-01-03 15:06:15 +01:00
a828198377 refactor(build): consolidate architecture guard tasks into reusable custom Gradle scripts
Replaced task implementations for `ForbiddenAuthorizationHeaderTask`, `FeatureIsolationTask`, and `BundleBudgetTask` with dedicated buildSrc scripts for improved clarity and maintainability. Updated task registrations accordingly in `build.gradle.kts`.
2026-01-03 14:38:22 +01:00
4f79c3c755 refactor(build): move Budget class to top-level 2026-01-03 14:37:55 +01:00
12f9ee23d8 refactor(build): extract reusable tasks into custom Gradle classes
Replaced inlined implementations of `ForbiddenAuthorizationHeaderTask`, `FeatureIsolationTask`, and `BundleBudgetTask` with dedicated custom Gradle task classes for improved maintainability and reusability. Updated task registrations in `build.gradle.kts`.
2026-01-03 13:37:11 +01:00
6c33de1680 refactor(vscode): update paths for Docker config and schemas, introduce Kotlin and Java configuration
Aligned `.vscode/settings.json` paths with the restructured `config/` directory. Added Kotlin language server and compiler settings, along with Java 25 runtime configuration. Simplified command-runner tasks.
2026-01-03 12:52:17 +01:00
591f703015 refactor(build): centralize JVM toolchain configuration in root build.gradle.kts
Removed redundant `jvmToolchain(25)` declarations across module build scripts, as the JVM toolchain is now managed centrally. Added comments for clarity.
2026-01-03 12:52:01 +01:00
e8f458d4c5 upgrade build: Kotlin-JVM Toolchain auf 25 gesetzt, JVM Target korrigiert & Gitignore erweitert 2026-01-03 12:51:43 +01:00
097721aca3 chore(dependencies): upgrade Spring Boot to 4.0.1, restore reactor-kafka version, add missing AOP starter
- Updated `springBoot` to version `4.0.1` for compatibility improvements.
- Reactivated and explicitly defined `reactor-kafka` dependency.
- Added missing `spring-boot-starter-aop` definition to dependency catalog.
2026-01-03 00:36:11 +01:00
2f7fe23f45 chore(gradle): centralize repository config in settings.gradle.kts and simplify BOM management
### Summary
- Removed `repositories` blocks from individual `build.gradle.kts` files, moving configuration to `settings.gradle.kts`.
- Replaced custom Spring Boot constraints in the platform BOM with the Spring Boot BOM for cleaner dependency management.
- Explicitly added `webflux` dependency for Gateway to handle transitivity changes in Spring Boot 4.x.
2026-01-03 00:34:08 +01:00
e38b693847 Versuche 2025-12-31 00:20:29 +01:00
9283f26df1 upgrade Java-25 Kotlin-2.3.0 usw. 2025-12-30 16:08:40 +01:00
84c3cfd787 upgrade Java-25 Kotlin-2.3.0 usw. 2025-12-24 13:54:22 +01:00
98a9504cbd upgrade Java-25 Kotlin-2.3.0 usw. 2025-12-22 14:12:51 +01:00
7b5fd063fb refactor(frontend): Landing‑Seite als Start gesetzt, Navigation um AppScreen.Landing erweitert und Footer‑Text modernisiert. 2025-12-13 13:00:13 +01:00
f402fbaf19 refactor(infra): Restrukturierung Config-Ordner & Einführung von Docker-Profilen
Umfangreiches Refactoring der Projektkonfiguration zur klaren Trennung von Build-, Runtime- und Applikations-Logik.

Änderungen im Detail:
- Struktur: Neuorganisation des `config/` Verzeichnisses in logische Bereiche:
  - `config/docker`: Reine Infrastruktur-Configs (Postgres, Redis, Nginx, Monitoring).
  - `config/quality`: Statische Code-Analyse (Detekt, Lint).
  - `config/app`: Gemeinsame Spring-Boot-Konfigurationen.
- Docker Compose:
  - Einführung von Profilen (`infra`, `backend`, `ops`, `gui`, `tools`) für gezieltes Starten von Teilbereichen.
  - Anpassung aller Volume-Pfade auf die neue Struktur.
- Spring Boot Config:
  - Zentralisierung gemeinsamer Einstellungen (Datasource, Redis, JPA) in `config/app/base-application.yml`.
  - Parametrisierung der Hosts für nahtlosen Wechsel zwischen Docker und Localhost.
  - Bereinigung der service-spezifischen `application.yaml` Dateien (z.B. Ping-Service).
- Cleanup: Entfernen redundanter "Ghost-Files" (`versions.toml`, `central.toml`, `config/.env`), um eine echte Single Source of Truth (SSoT) zu gewährleisten.
2025-12-10 15:25:10 +01:00
8221a7b915 fix `expect'/'actual' classes (including interfaces, objects, annotations, enums, and 'actual' typealiases) are in Beta. Consider using the '-Xexpect-actual-classes' flag to suppress this warning. Also see: https://youtrack.jetbrains.com/issue/KT-61573 2025-12-10 09:07:15 +01:00
52f7b33cbb fix `expect'/'actual' classes (including interfaces, objects, annotations, enums, and 'actual' typealiases) are in Beta. Consider using the '-Xexpect-actual-classes' flag to suppress this warning. Also see: https://youtrack.jetbrains.com/issue/KT-61573 2025-12-10 09:06:48 +01:00
f0d85aa4da Versuche 2025-12-08 20:46:47 +01:00
21ee130ebf chore(MP-30): final docs cleanup, adr consolidation & legacy removal
### Summary
- Rebuild `docs/how-to/start-local.md`

Ref: MP-30
2025-12-08 18:25:46 +01:00
33f1c0fab5 chore(MP-30): final docs cleanup, adr consolidation & legacy removal
### Summary
- Updated root `README.md` to reflect the new Backend/Frontend structure.
  - Rewrote the project structure section to show `backend/` and `frontend/` with their submodules, and `docs/adr` + `docs/c4`.
  - Corrected Gradle module examples from old `:members:members-service` paths to `:backend:services:results:results-service` for both `bootRun` and `test` examples.
  - Verified links now point to `docs/adr` and `docs/c4`.
- Updated `docs/README.md` to ensure flat paths:
  - Confirmed ADR and C4 links point to `adr/` and `c4/` respectively.
  - Updated the footer note to today’s date and linked ADR-0009.

These changes align the docs with the consolidated, flat documentation layout and the finalized module structure.

Ref: MP-30
2025-12-08 18:17:19 +01:00
14770003bd chore(MP-30): final docs cleanup, adr consolidation & legacy removal
Summary
- **Documentation Cleanup:**
  - ADRs consolidated to `docs/adr/`.
  - C4 diagrams moved to `docs/c4/`.
  - Removed legacy folder `docs/architecture/` and `docs/clients/`.
- **New ADR:** Added `0009-final-kmp-architecture.md` (Accepted).
- **Updates:**
  - `ARCHITECTURE.md` updated with final folder structure (Core Modules).
  - `README.md` links fixed.
- **Verification:**
  - `./gradlew staticAnalysis` -> SUCCESS.
  - Path references checked.

Ref: MP-30
2025-12-08 18:04:44 +01:00
StefanMo
5ea4730cd4
feat(MP-29): navigation core module, auth guards & shell wiring\n\n- Establish :frontend:core:navigation module with DeepLinkHandler\n- Introduce NavigationPort & CurrentUserProvider (DI)\n- Harden admin routes against AppRoles.ADMIN\n- Wire Koin in JS/JVM/Wasm shells (navigationModule)\n- Remove legacy DeepLinkHandler from shared\n- Add unit tests for guard logic\n\nRef: MP-29 (#24) 2025-12-08 14:23:08 +01:00
df2562ea23 chore(MP-28): add arch guards, bundle budgets & detekt consolidation
Summary
- Detekt Config zentralisiert (`config/detekt/detekt.yml`), alte Config gelöscht.
- Gradle Task `archGuardNoFeatureToFeatureDeps`: Verbietet Abhängigkeiten zwischen Feature-Modulen.
- Gradle Task `checkBundleBudget`: Prüft JS-Bundle-Größen gegen `config/bundles/budgets.json`.
- CI Integration: Budgets werden nach dem Build geprüft.

Verification
- `./gradlew archGuards` -> SUCCESS
- `./gradlew checkBundleBudget` -> SUCCESS
- CI Pipeline -> SUCCESS

Ref: MP-28
2025-12-08 12:19:41 +01:00
114236c8d9 feat(MP-27): backend consolidation, gateway routing & service dockerfiles
Summary
- Backend Services (Entries, Results, Scheduling) haben Dockerfiles.
- Docker Compose Orchestrierung steht (DB + Gateway + Services).
- Gateway Routing für `entries-service` implementiert (StripPrefix, Path Rewrites).
- Health-Checks und 409-Conflict-Demo Endpunkt verifiziert.

Verification
- `docker compose up --build` -> Success
- `curl http://localhost:8081/api/entries` -> 200 OK (routed through Gateway)

Ref: MP-27
2025-12-08 11:39:43 +01:00
b4769d89bc MP-27 Epic 7: Backend‑Konsolidierung – Services & Gateway 2025-12-06 23:43:46 +01:00
67d5de7608 MP-27 Epic 7: Backend‑Konsolidierung – Services & Gateway 2025-12-06 23:39:11 +01:00
b482b7b96c MP-26 Epic 6: Shell – Meldestelle‑Portal (JS/Wasm) 2025-12-06 23:18:57 +01:00
a8d99b5168 refactor(core): MP-25 Move User and AuthToken to core-domain 2025-12-06 22:48:02 +01:00
afd109efcc MP-24 Epic 4: Fertigstellung von MP-24: Authentication DI Refactoring & Cleanup
Das Refactoring der Authentifizierungs-Komponenten auf Dependency Injection (Koin) wurde verifiziert und abgeschlossen. Alle manuellen Instanziierungen wurden entfernt und die korrekte Initialisierung in allen Entry-Points sichergestellt.
2025-12-06 22:32:12 +01:00
7d9d729d7d chore(infra): Network/Auth – DoD schließen
- 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.
2025-12-06 22:01:41 +01:00
b3927ed97c chore(infra): Finalize local docker stack (Monitoring, Frontends, Fixes) 2025-12-06 21:00:12 +01:00
edfa74365f fix Monitoring - docker-compose.* + .env* 2025-12-06 14:06:31 +01:00
ecac459568 fix docker-compose.* + .env*
- desktop-app Versuch VNC
2025-12-06 13:47:02 +01:00
4426c1ea57 fix docker-compose.* + .env*
- desktop-app Versuch VNC
2025-12-06 13:46:21 +01:00
7a9795146c fix docker-compose.* + .env*
- desktop-app
2025-12-05 14:07:39 +01:00
97baa85a70 fix docker-compose.* + .env*
- web-app
2025-12-05 13:06:20 +01:00
5273efbe14 fix docker-compose.* + .env*
- web-app
2025-12-05 13:05:40 +01:00
d980c94b26 fix docker-compose.* + .env*
- postgres
- redis
- keycloak
- pgadmin
- consul
- api-gateway
- ping-service
2025-12-04 18:13:54 +01:00
6e4245d6a9 fix docker-compose.* + .env* Dateien auf den root übersiedelt 2025-12-04 11:30:01 +01:00
80ac574116 fix: 2025-12-04 03:34:11 +01:00
StefanMo
95fe3e0573
chore(ci): Align GH Workflows with Docker SSoT, new paths; minimal SSoT guard; staticAnalysis (#23)
* chore(MP-21): snapshot pre-refactor state (Epic 1)

* chore(MP-22): scaffold new repo structure, relocate Docker Compose, move frontend/backend modules, update Makefile; add docs mapping and env template

* MP-22 Epic 2: Erfolgreich umgesetzt und verifiziert

* MP-23 Epic 3: Gradle/Build Governance zentralisieren

* MP-23 Epic 3: Gradle/Build Governance zentralisieren

* chore(devops)!: Docker-SSoT (.env) konsolidiert, Compose-Mounts ergänzt, Makefile entfernt

- ENV Single Source of Truth
  - docker/.env.example neu (inkl. REDIS_PASSWORD, Ports, Build-Overrides)
  - config/.env(.example) als DEPRECATED markiert (Verweis auf docker/.env[.example])

- Docker Compose vereinheitlicht (docker/docker-compose.yaml)
  - Postgres: zentralen postgresql.conf mounten (../config/postgres/postgresql.conf)
    und Start mit -c config_file=/etc/postgresql/postgresql.conf
  - Redis: zentralen redis.conf mounten (../config/redis/redis.conf)
    und Start via "redis-server … ${REDIS_PASSWORD:+--requirepass $REDIS_PASSWORD}"
  - Web-Nginx: ../config/nginx/nginx.prod.conf → /etc/nginx/nginx.conf (ro)
  - Monitoring: Prometheus/Grafana nutzen ../config/monitoring/* als SSoT

- Frontend/DI/Network (MP-23 Grundlage)
  - :frontend:core:network Modul mit Koin `apiClient` (Ktor + JSON/Retry/Timeout/Logging)
  - Plattform-Basis-URL-Auflösung (JVM: ENV API_BASE_URL; JS: globalThis.API_BASE_URL / Same-Origin)
  - Web index.html setzt API_BASE_URL (Query `?apiBaseUrl=…` > Same-Origin > Fallback)

- Build/Gradle & Module-Refs
  - settings.gradle.kts: neue Frontend-/Backend-Pfade bereits inkludiert
  - Features/Shell: Abhängigkeiten auf :frontend:shared / :frontend:core:* angepasst
  - Ping-API-Refs auf :backend:services:ping:ping-api vereinheitlicht

- Dockerfiles angepasst
  - backend/infrastructure/gateway/Dockerfile → Tasks/Pfade auf :backend:gateway
  - backend/services/ping/Dockerfile → Tasks/Pfade auf :backend:services:ping:ping-service

- Static Analysis / Guards
  - config/detekt/detekt.yml hinzugefügt
  - Leichter Arch-Guard (Frontend) gegen manuelle Authorization-Header vorbereitet

- Doku
  - docs/ARCHITECTURE.md (Struktur, Mapping, Next Steps) ergänzt
  - docs/adr/README.md angelegt

BREAKING CHANGES:
- Makefile komplett entfernt (bitte direkt `docker compose` verwenden)
- ENV-Quelle ist jetzt docker/.env (statt config/.env oder Root)
- Compose-Datei unter docker/docker-compose.yaml (nicht mehr compose.yaml im Repo-Root)

Verifikation (lokal):
- ENV anlegen: `cp docker/.env.example docker/.env` (Werte anpassen)
- Compose prüfen: `docker compose --env-file docker/.env -f docker/docker-compose.yaml config`
- Infrastruktur: `docker compose --env-file docker/.env -f docker/docker-compose.yaml -p meldestelle up -d postgres redis keycloak web-app`
- Services bauen: `docker compose --env-file docker/.env -f docker/docker-compose.yaml -p meldestelle build api-gateway ping-service --no-cache --progress=plain`

Refs: MP-22 (Epic 2), MP-23 (Epic 3)

* chore(devops)!: Docker-SSoT (.env) konsolidiert, Compose-Mounts ergänzt, Makefile entfernt

- ENV Single Source of Truth
  - docker/.env.example neu (inkl. REDIS_PASSWORD, Ports, Build-Overrides)
  - config/.env(.example) als DEPRECATED markiert (Verweis auf docker/.env[.example])

- Docker Compose vereinheitlicht (docker/docker-compose.yaml)
  - Postgres: zentralen postgresql.conf mounten (../config/postgres/postgresql.conf)
    und Start mit -c config_file=/etc/postgresql/postgresql.conf
  - Redis: zentralen redis.conf mounten (../config/redis/redis.conf)
    und Start via "redis-server … ${REDIS_PASSWORD:+--requirepass $REDIS_PASSWORD}"
  - Web-Nginx: ../config/nginx/nginx.prod.conf → /etc/nginx/nginx.conf (ro)
  - Monitoring: Prometheus/Grafana nutzen ../config/monitoring/* als SSoT

- Frontend/DI/Network (MP-23 Grundlage)
  - :frontend:core:network Modul mit Koin `apiClient` (Ktor + JSON/Retry/Timeout/Logging)
  - Plattform-Basis-URL-Auflösung (JVM: ENV API_BASE_URL; JS: globalThis.API_BASE_URL / Same-Origin)
  - Web index.html setzt API_BASE_URL (Query `?apiBaseUrl=…` > Same-Origin > Fallback)

- Build/Gradle & Module-Refs
  - settings.gradle.kts: neue Frontend-/Backend-Pfade bereits inkludiert
  - Features/Shell: Abhängigkeiten auf :frontend:shared / :frontend:core:* angepasst
  - Ping-API-Refs auf :backend:services:ping:ping-api vereinheitlicht

- Dockerfiles angepasst
  - backend/infrastructure/gateway/Dockerfile → Tasks/Pfade auf :backend:gateway
  - backend/services/ping/Dockerfile → Tasks/Pfade auf :backend:services:ping:ping-service

- Static Analysis / Guards
  - config/detekt/detekt.yml hinzugefügt
  - Leichter Arch-Guard (Frontend) gegen manuelle Authorization-Header vorbereitet

- Doku
  - docs/ARCHITECTURE.md (Struktur, Mapping, Next Steps) ergänzt
  - docs/adr/README.md angelegt

BREAKING CHANGES:
- Makefile komplett entfernt (bitte direkt `docker compose` verwenden)
- ENV-Quelle ist jetzt docker/.env (statt config/.env oder Root)
- Compose-Datei unter docker/docker-compose.yaml (nicht mehr compose.yaml im Repo-Root)

Verifikation (lokal):
- ENV anlegen: `cp docker/.env.example docker/.env` (Werte anpassen)
- Compose prüfen: `docker compose --env-file docker/.env -f docker/docker-compose.yaml config`
- Infrastruktur: `docker compose --env-file docker/.env -f docker/docker-compose.yaml -p meldestelle up -d postgres redis keycloak web-app`
- Services bauen: `docker compose --env-file docker/.env -f docker/docker-compose.yaml -p meldestelle build api-gateway ping-service --no-cache --progress=plain`

Refs: MP-22 (Epic 2), MP-23 (Epic 3)

* chore(devops)!: Docker-SSoT (.env) konsolidiert, Compose-Mounts ergänzt, Makefile entfernt

- ENV Single Source of Truth
  - docker/.env.example neu (inkl. REDIS_PASSWORD, Ports, Build-Overrides)
  - config/.env(.example) als DEPRECATED markiert (Verweis auf docker/.env[.example])

- Docker Compose vereinheitlicht (docker/docker-compose.yaml)
  - Postgres: zentralen postgresql.conf mounten (../config/postgres/postgresql.conf)
    und Start mit -c config_file=/etc/postgresql/postgresql.conf
  - Redis: zentralen redis.conf mounten (../config/redis/redis.conf)
    und Start via "redis-server … ${REDIS_PASSWORD:+--requirepass $REDIS_PASSWORD}"
  - Web-Nginx: ../config/nginx/nginx.prod.conf → /etc/nginx/nginx.conf (ro)
  - Monitoring: Prometheus/Grafana nutzen ../config/monitoring/* als SSoT

- Frontend/DI/Network (MP-23 Grundlage)
  - :frontend:core:network Modul mit Koin `apiClient` (Ktor + JSON/Retry/Timeout/Logging)
  - Plattform-Basis-URL-Auflösung (JVM: ENV API_BASE_URL; JS: globalThis.API_BASE_URL / Same-Origin)
  - Web index.html setzt API_BASE_URL (Query `?apiBaseUrl=…` > Same-Origin > Fallback)

- Build/Gradle & Module-Refs
  - settings.gradle.kts: neue Frontend-/Backend-Pfade bereits inkludiert
  - Features/Shell: Abhängigkeiten auf :frontend:shared / :frontend:core:* angepasst
  - Ping-API-Refs auf :backend:services:ping:ping-api vereinheitlicht

- Dockerfiles angepasst
  - backend/infrastructure/gateway/Dockerfile → Tasks/Pfade auf :backend:gateway
  - backend/services/ping/Dockerfile → Tasks/Pfade auf :backend:services:ping:ping-service

- Static Analysis / Guards
  - config/detekt/detekt.yml hinzugefügt
  - Leichter Arch-Guard (Frontend) gegen manuelle Authorization-Header vorbereitet

- Doku
  - docs/ARCHITECTURE.md (Struktur, Mapping, Next Steps) ergänzt
  - docs/adr/README.md angelegt

BREAKING CHANGES:
- Makefile komplett entfernt (bitte direkt `docker compose` verwenden)
- ENV-Quelle ist jetzt docker/.env (statt config/.env oder Root)
- Compose-Datei unter docker/docker-compose.yaml (nicht mehr compose.yaml im Repo-Root)

Verifikation (lokal):
- ENV anlegen: `cp docker/.env.example docker/.env` (Werte anpassen)
- Compose prüfen: `docker compose --env-file docker/.env -f docker/docker-compose.yaml config`
- Infrastruktur: `docker compose --env-file docker/.env -f docker/docker-compose.yaml -p meldestelle up -d postgres redis keycloak web-app`
- Services bauen: `docker compose --env-file docker/.env -f docker/docker-compose.yaml -p meldestelle build api-gateway ping-service --no-cache --progress=plain`

Refs: MP-22 (Epic 2), MP-23 (Epic 3)

* chore(ci): Workflows an Docker-SSoT & neue Struktur angepasst, minimaler SSoT-Guard

- ssot-guard.yml: Option B (minimal) → `docker compose -f docker/docker-compose.yaml config` als Lint
- integration-tests.yml: `./gradlew staticAnalysis` vor Integrationstests
- docs-kdoc-sync.yml: Dokka-Task Fallback (dokkaGfmAll || dokkaGfm), YouTrack-Sync nur wenn Script vorhanden
- deploy-proxmox.yml: Compose-Pfade auf docker/docker-compose.yaml + `--env-file docker/.env`; Build/Test Schritte vereinheitlicht
- ci-main.yml: SSoT-Skripte per `if: hashFiles(...)` guarded, Compose-Lint Fallback; OpenAPI‑Pfad → backend/gateway; ADR‑Pfade → docs/adr/**; `staticAnalysis` in Build integriert
- youtrack-sync.yml: unverändert (funktional)

Refs: MP-22, MP-23

* chore(ci): Workflows an Docker-SSoT & neue Struktur angepasst, minimaler SSoT-Guard

- ssot-guard.yml: Option B (minimal) → `docker compose -f docker/docker-compose.yaml config` als Lint
- integration-tests.yml: `./gradlew staticAnalysis` vor Integrationstests
- docs-kdoc-sync.yml: Dokka-Task Fallback (dokkaGfmAll || dokkaGfm), YouTrack-Sync nur wenn Script vorhanden
- deploy-proxmox.yml: Compose-Pfade auf docker/docker-compose.yaml + `--env-file docker/.env`; Build/Test Schritte vereinheitlicht
- ci-main.yml: SSoT-Skripte per `if: hashFiles(...)` guarded, Compose-Lint Fallback; OpenAPI‑Pfad → backend/gateway; ADR‑Pfade → docs/adr/**; `staticAnalysis` in Build integriert
- youtrack-sync.yml: unverändert (funktional)

Refs: MP-22, MP-23

* fix(ci): create .env from example before validating compose config

* fix(ci): update ssot-guard filename (.yaml) and sync workflow state

* fixing

* fix(webpack): correct sql.js fallback configuration for webpack 5
2025-12-03 12:03:40 +01:00
StefanMo
034892e890
chore(MP-23): network DI client, frontend architecture guards, detekt & ktlint setup, docs, ping DI factory (#21)
* chore(MP-21): snapshot pre-refactor state (Epic 1)

* chore(MP-22): scaffold new repo structure, relocate Docker Compose, move frontend/backend modules, update Makefile; add docs mapping and env template

* MP-22 Epic 2: Erfolgreich umgesetzt und verifiziert

* MP-23 Epic 3: Gradle/Build Governance zentralisieren
2025-11-30 23:14:00 +01:00
StefanMo
89bbd42245
refactor/architecture-registry-masterdata (#19)
* MP-19 Refactoring: Einführung der "Registry" & "Masterdata" Trennung (Clean Architecture)

Architektur-Entscheidung: "Zwei-Welten-Modell" zur Trennung von User-Identität und Verbandsdaten.

Änderungen:
- settings.gradle.kts: Umstrukturierung der Module in 'domains', 'infrastructure', 'core'.
- Modul ':members' wurde zu ':domains:registry' (Single Source of Truth für OEPS-Daten).
- Neues Modul ':domains:registry:oeps-importer' für ZNS-Datenimports (Spring Batch Vorbereitung).
- Neues Modul ':domains:masterdata' für Regelwerke und Kataloge.
- Entfernung/Deaktivierung von Legacy-Modulen, die durch Keycloak (Docker) ersetzt wurden.

Ziel: DSGVO-konforme Trennung von "User" (Auth) und "Person" (Registry) sowie Vorbereitung für Multi-Verband-Support.

* MP-19 Refactoring: Frontend Tabula Rasa

* MP-19 Refactoring: Frontend Tabula Rasa

* refactoring:
Ein umfassender Commit wurde vorgeschlagen, der Zeittypen vereinheitlicht, Fehlercodes zentralisiert und neue Funktionen in core-utils hinzufügt. Es wurden Breaking Changes dokumentiert, insbesondere bei Datenbank-Utilities und Zeit-/Serializer-Konsolidierung. Die Commit-Nachricht folgt dem Conventional Commits-Standard und umfasst mehrere Module.

* MP-20 fix(docker/clients): include `:domains` module in web/desktop builds to fix Gradle configuration error

      Docker build der Clients schlug fehl beim Schritt `:clients:app:dependencies` mit:
      "Configuring project ':domains' without an existing directory is not allowed. The configured projectDirectory '/app/domains' does not exist..."

      Änderungen:
      - dockerfiles/clients/web-app/Dockerfile: COPY domains ./domains
      - dockerfiles/clients/desktop-app/Dockerfile: COPY domains ./domains

      Begründung:
      - `settings.gradle.kts` inkludiert `:domains`; der Ordner wurde bisher nicht in das Build-Image kopiert.
      - Dadurch konnte Gradle das Multi-Projekt im Container nicht konfigurieren.

      Hinweise:
      - Keine Laufzeitänderungen, nur Build-Fix.
      - Caching bleibt erhalten (COPY vor den Gradle-Schritten).

      Rebuild:
      - Hardcoded: `docker compose -f compose.hardcoded.yaml build web-app`
      - Env-basiert: `docker compose -f compose.yaml build web-app`

* MP-20 fix(web-app build): resolve JS compile error and add dev/prod build profile for Docker

      - clients:shared: remove legacy DI wiring to data/PingRepositoryImpl in SharedModule
      - dockerfiles/clients/*: copy `domains/` into builder to satisfy multi-project includes
      - web-app Dockerfile: add WEB_BUILD_PROFILE (dev|prod), unify dist copy via /app/web-dist
      - compose(.yaml|.hardcoded.yaml): pass WEB_BUILD_PROFILE (default dev)

      Result: JS build succeeds; flexible dev/prod bundles for faster iteration or optimized assets.

* MP-20 fix(web-app): remove vendor.js reference and harden JS bootstrap so Welcome screen renders

      Problem:
      - Web UI blieb bei „🚀 Loading Meldestelle…“ stehen, obwohl `web-app.js` (200/304) geladen wurde.
      - In DEV gab es keinen `vendor.js`-Chunk → der harte `<script src="vendor.js">`-Eintrag führte zu 404 und verhinderte den Start.

      Änderungen:
      - clients/app/src/jsMain/resources/index.html
        - Entfernt: hart codiertes `<script src="vendor.js" defer></script>`
        - Beibehalten: Single-Bundle `<script src="web-app.js" defer></script>` mit Hinweiskommentar
      - clients/app/src/jsMain/kotlin/main.kt
        - Start-Mechanik robuster gemacht: DOMContentLoaded/readyState-Check, sichtbares Fehlermeldungs-Fallback, Debug-Logs (`[WebApp] …`), Entfernen des „Loading …“-Platzhalters nach Mount
      - clients/app/build.gradle.kts
        - Sichergestellt: `binaries.executable()` und `mainOutputFileName = "web-app.js"`; keine CommonJS/`libraryTarget`-Konfiguration mehr
      - dockerfiles/clients/web-app/Dockerfile
        - Build-Profil per `WEB_BUILD_PROFILE=dev|prod` (Default: dev)
        - DEV: Single-File-Bundle (developmentExecutable) → `/app/web-dist` → Nginx
        - PROD: Distribution-Bundle (productionExecutable) → `/app/web-dist` → Nginx

      Warum:
      - DEV-Bundle emittiert i. d. R. nur `web-app.js`. Der `vendor.js`‑Request erzeugte 404 und stoppte den App-Start.
      - Robuster Bootstrap stellt sicher, dass Compose auch bei unterschiedlichen Ladezeiten zuverlässig mountet.

      Verifikation:
      - `docker compose -f compose.yaml build web-app && docker compose -f compose.yaml up -d web-app`
      - Browser: http://localhost:4000 → Welcome rendert; Network: nur `web-app.js` (200), kein `vendor.js`; Console: keine Fehler, optionale `[WebApp]`‑Logs sichtbar.

      Hinweis:
      - Für PROD (optional): `WEB_BUILD_PROFILE=prod` bauen; Chunk‑Injektion erfolgt über das Kotlin/JS‑Plugin (keine hart codierten Chunk‑Namen in HTML verwenden).

* MP-20 fixing: clients

* MP-20 fixing: clients
2025-11-30 14:18:16 +01:00
StefanMo
9ea2b74a81
Merge pull request #18
* MP-19 Refactoring: Einführung der "Registry" & "Masterdata" Trennung …

* MP-19 Refactoring: Frontend Tabula Rasa

* MP-19 Refactoring: Frontend Tabula Rasa

* refactoring:

* MP-20 fix(docker/clients): include `:domains` module in web/desktop b…

* MP-20 fix(web-app build): resolve JS compile error and add dev/prod b…

* MP-20 fix(web-app): remove vendor.js reference and harden JS bootstra…

* MP-20 fixing: clients

* MP-20 fixing: clients
2025-11-30 14:13:12 +01:00
596a05b69c refactoring: Docker-Dateien Api-Gateway 2025-11-26 13:45:57 +01:00
b8af69ccf6 refactoring: Docker-Dateien Api-Gateway 2025-11-25 13:04:25 +01:00
45fe774a45 refactoring:
1. Update MemberRepositoryImpl: replace DatabaseFactory.dbQuery calls with explicit Exposed transaction{} and remove the non-existent import; add necessary ExperimentalTime opt-ins and fix Clock usages.
2. Inspect members-infrastructure MemberTable.kt to add missing ExperimentalTime opt-ins and adjust types if needed.
3. Rebuild to surface any remaining Exposed API or import errors and fix them.
4. Verify members-api compiles and that endpoints remain intact; provide final summary.
2025-11-25 00:08:00 +01:00
286c1aa881 refactoring:
Ein UseCase zur Sicherstellung von Member-Profilen wurde implementiert und ein Sync-Endpunkt im Backend hinzugefügt. Das Frontend löst nach Login einen einmaligen Sync-Call aus, optional wurde eine Komfortfunktion im MembersApiClient ergänzt. Build und Tests wurden erfolgreich ausgeführt, alle Gateway-Tests sind grün.
2025-11-24 22:33:42 +01:00