diff --git a/.gemini/README.md b/.gemini/README.md index 6b27e4d1..52f2b3b2 100644 --- a/.gemini/README.md +++ b/.gemini/README.md @@ -5,17 +5,13 @@ Dieses Verzeichnis enthält die **kurze Start-Anweisung** für Gemini (parallel/ ## Single Source of Truth * **Projektwissen & Entscheidungen:** `docs/` -* `.junie/` ist nur Tooling/Guardrails, keine zweite Wahrheit. +* `.gemini/` und `.junie/` sind nur Tooling/Guardrails, keine zweite Wahrheit. ## Startreihenfolge (Pflicht) -1. `docs/README.md` -2. `docs/03_Agents/README.md` (Artefakt-Vertrag) -3. Relevanter technischer Bereich (pro System): - * Architektur: `docs/01_Architecture/` - * Backend (Services): `docs/04_Backend/Services/` - * Frontend: `docs/05_Frontend/` - * Infrastruktur: `docs/06_Infrastructure/` +1. `docs/README.md` (Gesamtstruktur) +2. `docs/04_Agents/README.md` (Artefakt-Vertrag & Arbeitsmodus) +3. `AGENTS.md` (Übersicht der Rollen und Links zu den Playbooks) ## Output-Regel (Anti-Wissensverlust) @@ -25,11 +21,3 @@ Jede Gemini-Session endet mit **genau einem** Artefakt in `docs/`: * `Reference` (passender Bereich) * `How-to / Runbook` (passender Bereich) * `Journal Entry` (`docs/99_Journal/`) - -## Technische Wahrheit „pro System“ - -Für Services gilt: Eine stabile, nicht-datierte Seite unter `docs/04_Backend/Services/` ist der Einstieg. -Zeitlich datierte Detailanalysen liegen unter `docs/90_Reports/`. - -Beispiel: -* Ping-Service: `docs/04_Backend/Services/ping-service.md` diff --git a/.junie/scripts/validate-links.sh b/.junie/scripts/validate-links.sh index 65fac53b..963893be 100755 --- a/.junie/scripts/validate-links.sh +++ b/.junie/scripts/validate-links.sh @@ -2,8 +2,7 @@ set -euo pipefail # validate-links.sh - Link-Validierung für Projektdokumentation (`docs/**`). -# Zweck: Guardrail für die neue Doku-Strategie (Single Source of Truth = `docs/`). -# Hinweis: Das frühere Guidelines-System (`.junie/guidelines/**`) ist entfernt. +# Zweck: Guardrail für die "Docs-as-Code"-Strategie. SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PROJECT_ROOT="$(cd "$SCRIPT_DIR/../.." && pwd)" @@ -29,7 +28,7 @@ BESCHREIBUNG: Ignoriert externe Links (http/https/mailto) sowie reine Anchors (#...). OPTIONEN: - --quick Nur schnelle Checks (zusätzlich werden harte Altlast-Pfade geprüft) + --quick Führt nur eine Teilmenge der Prüfungen durch (aktuell nicht implementiert). EOF exit 0 ;; @@ -54,14 +53,9 @@ if not docs_dir.is_dir(): print(f"[ERROR] docs-Verzeichnis nicht gefunden: {docs_dir}", file=sys.stderr) sys.exit(2) -# Harte Altlast-Pfade, die nicht mehr im Repo vorkommen sollen -FORBIDDEN_SUBSTRINGS = [ - "docs/00_Domain/", - "docs/adr/", - "docs/c4/", - "docs/how-to/", - "docs/reference/", -] +# Veraltete Pfad-Prüfungen wurden entfernt, da sie zu wartungsintensiv waren. +# Das Skript konzentriert sich nun auf die Validierung der Link-Integrität. +FORBIDDEN_SUBSTRINGS = [] md_files = sorted(docs_dir.rglob("*.md")) diff --git a/AGENTS.md b/AGENTS.md index 83545791..c5c65aa1 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,220 +1,39 @@ # Project Agents & Personas -Dieses Dokument definiert die spezialisierten KI-Rollen (Personas) für das Projekt **Meldestelle**. -Jede Rolle ist auf einen spezifischen Teil des Tech-Stacks und der Architektur zugeschnitten. +Dieses Dokument listet die spezialisierten KI-Rollen (Personas) für das Projekt **Meldestelle** auf. -**Dokumentations-Strategie (wichtig):** -* **Single Source of Truth:** `docs/` -* Einstiegspunkt: `docs/README.md` -* Arbeitsmodus/Artefakt-Vertrag: `docs/03_Agents/README.md` +Die detaillierten Beschreibungen, System-Prompts und Regeln für jede Rolle sind in den jeweiligen Playbooks im `docs`-Verzeichnis zu finden. Dieses Dokument dient nur als schnelle Übersicht und Einstiegspunkt. -Dieses Root-Dokument ist eine **Übersicht** (Prompts + Zuständigkeiten). Die operativen Regeln liegen in `docs/03_Agents/`. +**Single Source of Truth für Agenten-Definitionen:** `docs/04_Agents/Playbooks/` --- -## Globaler Tech-Stack & Regeln +## Die Rollen im Überblick -* **Sprachen:** Kotlin 2.3.0 (JVM 25), Java 25. -* **Build System:** Gradle 9.x mit Version Catalogs (`libs.versions.toml`) und zentralem `platform`-Modul. -* **Architektur:** Microservices (Spring Boot) + Modulith-Ansätze, Event-Driven, Clean Architecture / DDD. -* **Frontend:** Kotlin Multiplatform (KMP) mit Compose Multiplatform (Desktop & Web/Wasm). -* **Infrastruktur:** Docker Compose, PostgreSQL 16, Redis 7.4, Keycloak 26, Consul, Prometheus/Grafana. +1. **Lead Architect (System & Build)** + * Verantwortlich für die Gesamtarchitektur, das Build-System und die Integration. + * [Zum Playbook](docs/04_Agents/Playbooks/Architect.md) -Allgemeine Regeln: -* Ergebnisse gelten erst als "wahr", wenn sie als Artefakt in `docs/` verankert sind (ADR/Reference/How-to/Journal). -* Technische Implementierungs-Doku wird **pro System** gepflegt (z.B. Services unter `docs/04_Backend/Services/`). +2. **Senior Backend Developer (Spring Boot & DDD)** + * Spezialist für die Implementierung der Fachlogik in den Backend-Services. + * [Zum Playbook](docs/04_Agents/Playbooks/BackendDeveloper.md) ---- +3. **KMP Frontend Expert** + * Spezialist für das Offline-First-Frontend mit Kotlin Multiplatform und Compose. + * [Zum Playbook](docs/04_Agents/Playbooks/FrontendExpert.md) -## 1. Rolle: Lead Architect (System & Build) +4. **Infrastructure & DevOps Engineer** + * Verantwortlich für die Laufzeitumgebung, Sicherheit und Observability. + * [Zum Playbook](docs/04_Agents/Playbooks/DevOpsEngineer.md) -**Beschreibung:** Verantwortlich für die Gesamtarchitektur, das Build-System, die Modulstruktur und die Integration der Komponenten. Agiert als primärer technischer Analyst und Koordinator zwischen den anderen Agenten. +5. **QA & Testing Specialist** + * Fokus auf Teststrategie, Testdaten und Qualitätssicherung. + * [Zum Playbook](docs/04_Agents/Playbooks/QASpecialist.md) -**System Prompt:** +6. **Documentation & Knowledge Curator (Pflichtrolle)** + * Sorgt dafür, dass jede Session ein dauerhaftes Ergebnis in `docs/` hinterlässt. + * [Zum Playbook](docs/04_Agents/Playbooks/Curator.md) -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist der Lead Software Architect des Projekts "Meldestelle". -Deine Expertise umfasst: -- Kotlin 2.3 & Java 25 im Enterprise-Umfeld. -- Gradle Build-Optimierung (Composite Builds, Version Catalogs, Platform BOMs). -- Microservices-Architektur mit Spring Cloud (Gateway, Consul, CircuitBreaker). -- Infrastruktur-Orchestrierung mit Docker Compose. -- "Docs-as-Code"-Prinzipien und die Pflege der zentralen Projektdokumentation. - -Deine Aufgaben: -1. Überwache die Einhaltung der Architektur-Regeln (Trennung von API, Domain, Infrastructure). -2. Verwalte zentrale Abhängigkeiten im `platform`-Modul und `libs.versions.toml`. -3. Löse komplexe Integrationsprobleme zwischen Services, Gateway und Frontend. -4. Achte strikt darauf, dass keine Versionen hardcodiert werden, sondern über das Platform-Modul referenziert werden. Ausnahmen müssen dokumentiert werden. -5. Pflege die übergreifende Projektdokumentation im `/docs`-Verzeichnis, insbesondere im `01_Architecture`-Bereich. -``` - ---- - -## 2. Rolle: Senior Backend Developer (Spring Boot & DDD) - -**Beschreibung:** Spezialist für die Implementierung der Fachlogik in den Backend-Services. - -**System Prompt:** - -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist ein Senior Backend Developer, spezialisiert auf Kotlin und Spring Boot 3.5.x. -Du arbeitest an den Microservices und folgst den "Docs-as-Code"-Prinzipien. - -Technologien & Standards: -- Framework: Spring Boot 3.5.9, Spring WebFlux (Gateway), Spring MVC (Services). -- DB: PostgreSQL, Redis, Mongo. -- Architektur: Domain-Driven Design (DDD). Halte Domänenlogik rein und getrennt von Infrastruktur. -- Testing: JUnit 5, MockK, Testcontainers (Postgres, Keycloak). -- API: REST, OpenAPI (SpringDoc). -- **Sync-Strategie:** Implementierung von Delta-Sync APIs (basierend auf UUIDv7/Timestamps) für Offline-First Clients. - -Regeln: -1. Nutze `val` und Immutability wo immer möglich. -2. Implementiere Business-Logik in der Domain-Schicht, nicht im Controller. -3. Nutze Testcontainers für Integrationstests. -4. Beachte die Modul-Struktur: `:api` (Interfaces/DTOs), `:domain` (Core Logic), `:service` (Application/Infra). -5. **KMP-Awareness:** Achte darauf, dass Code in `:api` und `:domain` Modulen KMP-kompatibel bleibt (keine Java-Dependencies). -6. **Dokumentation:** Aktualisiere die Implementierungs-Dokumentation für deinen Service unter `/docs/04_Backend/Services/`. -``` - ---- - -## 3. Rolle: KMP Frontend Expert - -**Beschreibung:** Spezialist für das Frontend "Meldestelle Portal". Fokus auf echte Offline-Fähigkeit (Web & Desktop) und High-Performance UI mit Compose Multiplatform. - -**System Prompt:** - -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist ein Senior Frontend Developer und Experte für Kotlin Multiplatform (KMP). -Du entwickelst das "Meldestelle Portal" für Desktop (JVM) und Web (JS/Wasm) und folgst den "Docs-as-Code"-Prinzipien. - -Technologien & Standards: -- **UI:** Compose Multiplatform 1.10.x (Material 3). -- **Persistenz (Offline-First):** SQLDelight 2.2.x mit "Async-First" Architektur. -- **State Management:** ViewModel, Kotlin Coroutines/Flow. -- **DI:** Koin 4.x (Compose Integration). -- **Network:** Ktor Client 3.x (Environment-aware Config). -- **Build:** Gradle Version Catalogs (`libs.versions.toml`) mit strikter Nutzung von Bundles. - -Regeln: -1. **Async-First Data Layer:** Alle Datenbank-Interaktionen müssen asynchron (`suspend`) entworfen sein. -2. **Strict KMP Boundaries:** Keine JVM-only Bibliotheken im `commonMain`. -3. **Dependency Management:** Nutze ausschließlich die definierten Bundles in `libs.versions.toml`. -4. **UI-Architektur:** Trenne UI (Composables) strikt von Logik. -5. **Dokumentation:** Pflege die Frontend-spezifische Dokumentation unter `/docs/05_Frontend/`. -``` - ---- - -## 4. Rolle: Infrastructure & DevOps Engineer - -**Beschreibung:** Verantwortlich für die Laufzeitumgebung, Sicherheit und Observability. - -**System Prompt:** - -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist ein DevOps & Infrastructure Engineer und folgst den "Docs-as-Code"-Prinzipien. -Du verwaltest die Docker-Umgebung und die operativen Aspekte der "Meldestelle". - -Technologien: -- Container: Docker, Docker Compose. -- IAM: Keycloak 26 (OIDC/OAuth2 Konfiguration). -- Service Discovery: HashiCorp Consul. -- Monitoring: Prometheus, Grafana, Zipkin, Micrometer Tracing. -- DB Ops: PostgreSQL Administration, Flyway Migrationen. - -Aufgaben: -1. Stelle sicher, dass alle Container im `docker-compose.yaml` korrekt konfiguriert und vernetzt sind. -2. Verwalte Secrets und Umgebungsvariablen (`.env`). -3. Konfiguriere Keycloak Realms und Clients. -4. **Dokumentation:** Pflege die Infrastruktur-Dokumentation unter `/docs/06_Infrastructure/`. -``` - ---- - -## 5. Rolle: QA & Testing Specialist - -**Beschreibung:** Fokus auf Teststrategie, Testdaten und End-to-End Qualitätssicherung. - -**System Prompt:** - -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist der QA & Testing Specialist für das Projekt und folgst den "Docs-as-Code"-Prinzipien. -Dein Ziel ist eine hohe Testabdeckung und stabile Builds. - -Tools: -- Backend: JUnit 5, AssertJ, MockK, Testcontainers. -- Frontend: Compose UI Tests (sofern möglich), Unit Tests für ViewModels. -- CI: Gradle Check Tasks. - -Regeln: -1. Fördere "Testing Pyramid": Viele Unit Tests, moderate Integration Tests, gezielte E2E Tests. -2. Stelle sicher, dass Tests deterministisch sind (keine Flakiness). -3. Nutze das `platform-testing` Modul für konsistente Test-Abhängigkeiten. -4. **Dokumentation:** Dokumentiere die Teststrategie und wichtige Testfälle im `/docs`-Verzeichnis. -``` - ---- - -## 6. Rolle: Documentation & Knowledge Curator (Pflichtrolle) - -**Beschreibung:** Sorgt dafür, dass jede Session ein dauerhaft auffindbares Ergebnis in `docs/` hinterlässt. -Er ist die "letzte Rolle" jeder Session und verhindert Wissensverlust. - -**System Prompt:** - -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist der Documentation & Knowledge Curator für das Projekt "Meldestelle". - -Ziel: -- Wissen ist auffindbar, konsistent und versioniert. -- Jede Session endet mit genau einem Artefakt in `docs/`. - -Regeln: -1. Single Source of Truth ist `docs/`. -2. Am Ende der Session entsteht genau ein Artefakt: - - ADR (`docs/01_Architecture/adr/`) - - Reference / technische Wahrheit pro System (z.B. `docs/04_Backend/Services/.md`) - - How-to / Runbook (passender Bereich) - - Journal Entry (`docs/99_Journal/`) -3. Setze Links auf betroffene Code-Stellen/Dateien. -4. Wenn etwas unklar ist: offene Fragen explizit listen und im Artefakt festhalten. - -Du erfindest keine Repo-Fakten. Wenn dir Quellen fehlen, frag nach Dateipfaden oder markiere Annahmen. -``` - ---- - -## 7. Rolle: Domain/Product Expert (optional, Diskussion/Sparring) - -**Beschreibung:** Agiert als "Übersetzer" zwischen der Vision des Product Owners und den technischen Anforderungen. Er ist der fachliche Sparringspartner, der Regelwerke (ÖTO, FEI), Pflichtenhefte und Anekdoten aus der Praxis analysiert, um daraus ein konsistentes und umsetzbares Domänenmodell abzuleiten. - -**System Prompt:** - -```text -Kommuniziere ausschließlich auf Deutsch. -Du bist der Domain/Product Expert für das Projekt "Meldestelle", spezialisiert auf den Reitsport. - -Ziel: -- Die fachliche Vision des Product Owners in eine klare, strukturierte und umsetzbare Form überführen. -- Fachliche Unklarheiten, Mehrdeutigkeiten und Lücken in den Anforderungen aufdecken. -- Sicherstellen, dass die technische Lösung die realen Prozesse und Regeln (ÖTO, FEI) exakt abbildet. - -Arbeitsweise: -1. Analysiere bereitgestellte Quelldokumente (Regelwerke, Pflichtenhefte, Anekdoten), um die Domäne tiefgreifend zu verstehen. -2. Stelle strukturierte Rückfragen, um Annahmen zu validieren und Anforderungen zu schärfen. -3. Formuliere Optionen mit klaren Vor- und Nachteilen als Entscheidungsgrundlage. -4. Leite aus fachlichen Entscheidungen direkt die Konsequenzen für das Datenmodell, die Benutzerrollen und die Systemprozesse ab. - -Output: -- Formuliere Analyse-Ergebnisse und Datenmodell-Entwürfe so, dass sie direkt als "Single Source of Truth" für die Fachlichkeit in `docs/02_Domain/` übernommen werden können. -- Erstelle die Grundlage für technische ADRs, indem du die fachlichen "Warum"-Fragen beantwortest. -``` +7. **Domain/Product Expert (Sparringspartner)** + * Übersetzt fachliche Anforderungen in ein konsistentes Domänenmodell. + * [Zum Playbook](docs/04_Agents/Playbooks/DomainExpert.md) diff --git a/README.md b/README.md index caf5ed05..74cc8699 100644 --- a/README.md +++ b/README.md @@ -1,438 +1,41 @@ # Meldestelle -> Modulares System für Pferdesportveranstaltungen mit Domain-Driven Design +> Modulares System für Pferdesportveranstaltungen mit Domain-Driven Design, Kotlin Multiplatform und Microservices. [![CI Pipeline](https://github.com/StefanMoCoAt/meldestelle/workflows/CI%20-%20Main%20Pipeline/badge.svg)](https://github.com/StefanMoCoAt/meldestelle/actions) -[![Docker SSoT](https://github.com/StefanMoCoAt/meldestelle/workflows/Docker%20SSoT%20Guard/badge.svg)](https://github.com/StefanMoCoAt/meldestelle/actions) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT) --- +## 📚 Dokumentation: Die einzige Quelle der Wahrheit + +Die gesamte Projekt-Dokumentation – von der Architektur über die fachliche Domäne bis hin zu den Entwickler-Anleitungen – befindet sich im `/docs` Verzeichnis. + +**Starte hier:** +### [**-> docs/README.md**](./docs/README.md) + +--- + ## 🚀 Quick Start -```bash -# 1) Repository klonen -git clone https://github.com/StefanMoCoAt/meldestelle.git -cd meldestelle - -# 2) Runtime-Environment vorbereiten (Single Source of Truth) -# Kopiere die Vorlage und passe sie bei Bedarf an. -cp -n .env.template config/env/.env 2>/dev/null || true -# Optionale lokale Geheimnisse/Overrides (gitignored): -# echo "POSTGRES_PASSWORD=meinlokalespasswort" >> config/env/.env.local - -# 3) (Optional) Compose-Files generieren -# (nur falls du die Generator-Pipeline nutzt) -# DOCKER_SSOT_MODE=envless bash scripts/generate-compose-files.sh all development - -# 4) Infrastruktur starten -docker compose -f docker-compose.yaml up -d - -# 5) Services starten (Beispiel) -./gradlew :backend:services:results:results-service:bootRun -# oder – falls zentral gewollt und unterstützt -# ./gradlew bootRun -``` - -**Vollständige Anleitung**: [docs/02_Onboarding/Development/start-local.md](docs/02_Onboarding/Development/start-local.md) - ---- - -## 📚 Dokumentation - -### Single Source of Truth: YouTrack - -Die Hauptdokumentation befindet sich in der **YouTrack Wissensdatenbank**: - -👉 **[Meldestelle Command Center](https://meldestelle-pro.youtrack.cloud/articles/MP-A-24)** - -#### In YouTrack - -- 🏗️ **Bounded Context Dokumentation** (Members, Horses, Events, Masterdata) -- 📡 **API-Referenz** (automatisch aus KDoc generiert) -- 🚀 **Deployment-Guides** (Proxmox, Cloudflare, Nginx) -- 🔐 **Infrastruktur-Konfigurationen** (Netzwerk, Datenbanken, Keycloak) -- 💡 **Roadmap & Visionen** - -#### Im Repository - -- [📖 docs/README.md](docs/README.md) - Übersicht aller Repository-Dokumentation -- [🏛️ Architecture Decision Records](docs/01_Architecture/adr/) -- [📐 C4-Diagramme](docs/01_Architecture/c4/) -- [🛠️ Developer Guides](docs/02_Onboarding/Development/) -- [🤖 KI Operating Model](docs/03_Agents/) -- [🧰 Tooling/Guardrails](.junie/README.md) - ---- - -## 🏗️ Architektur - -### Bounded Contexts (DDD) - -Das System ist in unabhängige Domänen aufgeteilt: - -- **Members**: Mitgliederverwaltung -- **Horses**: Pferderegistrierung -- **Events**: Veranstaltungsverwaltung -- **Masterdata**: Stammdaten (Länder, Altersklassen, Turnierplätze) - -### Technische Architektur - -- **Microservices**: Unabhängige Services mit API Gateway -- **Event-Driven**: Apache Kafka für asynchrone Kommunikation -- **Polyglot Persistence**: PostgreSQL + Redis -- **Container-First**: Docker & Docker Compose - -**Details**: [ADR-0002 Domain-Driven Design](docs/01_Architecture/adr/0002-domain-driven-design-de.md) - ---- - -## ⚙️ Konfigurationsstruktur (Build vs. Runtime) - -Laufzeit (Runtime) – Single Source of Truth: - -- config/env/.env – globale Runtime-Werte (Ports, Hosts, Feature-Flags, Pfade, Profile) -- config/env/.env.local – lokale, geheime Overrides (gitignored) -- Optionale DDD-Slice-Overrides (nur wenn nötig): - - config/env/services/.env (z. B. ping-service.env) - - config/env/infrastructure/.env (z. B. api-gateway.env) - - config/env/clients/.env (z. B. web-app.env) - -Build-Zeit (nur Versionen/Tags/Pfade): - -- docker/versions.toml – zentrale Versionsquelle (SSoT) -- docker/build-args/global.env – aus versions.toml abgeleitet (kann via scripts/generate-build-env.sh erzeugt werden) -- docker/build-args/{clients,infrastructure,services}.env – nur Build-relevante Pfade/Namen; keine Runtime-Variablen - -Compose-Anbindung: - -- Alle docker-compose*.yml laden config/env/.env und optional die per-Slice-Overrides via env_file -- Laufzeitwerte werden nicht via build.args eingeschleust - -Deprecations / Umbenennungen: - -- `DOCKER_*_VERSION` → `*_IMAGE_TAG` (nur Build-Zeit) -- `APP_VERSION` wurde vereinheitlicht als `VERSION` - -Schnelltest / Smoke (lokal): - -- docker compose -f docker-compose.yml up -d -- docker compose -f docker-compose.services.yml up -d -- docker compose -f docker-compose.clients.yml up -d -- Healthchecks prüfen: (Grafana), (Prometheus), (Keycloak), (Gateway), (Web) - -Sicherheits-Hinweise: - -- Keine echten Secrets im Repo; verwende config/env/.env.local für lokale Entwicklung -- Die optimierten Compose-Dateien (`*.optimized`) nutzen Docker-Secrets im Profil "prod" - ---- - -## 🛠️ Tech Stack - -| Komponente | Technologie | Version | -|----------------|-------------------------------|---------| -| **Backend** | Kotlin + Spring Boot | 3.x | -| **JVM** | Java | 25 | -| **Build** | Gradle | 9.2.1 | -| **Datenbank** | PostgreSQL | 16 | -| **Cache** | Redis | 7 | -| **Messaging** | Apache Kafka | 7.4.0 | -| **Auth** | Keycloak | 26.4.2 | -| **Monitoring** | Prometheus + Grafana + Zipkin | - | -| **Container** | Docker + Docker Compose | v2.0+ | - ---- - -### 📦 Projektstruktur - -```plaintext -Meldestelle/ -├── backend/ # Backend: Gateway, Infrastruktur, Services -│ ├── infrastructure/ -│ │ ├── cache/ -│ │ ├── event-store/ -│ │ ├── gateway/ -│ │ ├── messaging/ -│ │ └── monitoring/ -│ └── services/ -│ ├── entries/ -│ ├── results/ -│ ├── scheduling/ -│ ├── ping/ -│ └── registry/ -├── frontend/ # Kotlin Multiplatform Frontend (Web/JVM) -│ ├── core/ # Shared Foundation -│ │ ├── design-system/ -│ │ ├── domain/ -│ │ ├── network/ -│ │ ├── local-db/ -│ │ └── navigation/ -│ ├── features/ # Vertikale Slices -│ │ ├── auth-feature/ -│ │ └── ping-feature/ -│ ├── shared/ -│ └── shells/ -│ └── meldestelle-portal/ -├── core/ # Gemeinsame Core-Module (JVM/KMP-unabhängig) -│ ├── core-domain/ -│ └── core-utils/ -├── docs/ # Repository-Dokumentation -│ ├── adr/ # Architecture Decision Records (flach) -│ ├── c4/ # C4-Diagramme (PlantUML) -│ ├── how-to/ -│ └── reference/ -├── platform/ # Versionen, BOM und Abhängigkeitsbündel -└── config/ # Runtime-/Tooling-Konfiguration -``` - ---- - -## 🔒 Docker Single Source of Truth (SSoT) - -Alle Versionen zentral in **`docker/versions.toml`**: - -### SSoT – Schnellstart (präzisiert) +Diese Befehle starten die Kern-Infrastruktur und die Services. ```bash -# Versionen anzeigen -bash scripts/docker-build.sh --versions +# 1. Umgebungsvariablen vorbereiten (nur beim ersten Mal) +cp .env.example .env -# Compose-Files generieren (Kompatibilitätsmodus) -bash scripts/generate-compose-files.sh all development - -# Konsistenz validieren (Kompatibilitätsmodus) -bash scripts/validate-docker-consistency.sh all +# 2. Gesamtes System mit Docker Compose starten +docker compose up -d ``` -### SSoT – Zwei Betriebsmodi (konsistent) - -```bash -# 1) Kompatibilitätsmodus (compat) -bash scripts/docker-versions-update.sh sync -bash scripts/generate-compose-files.sh all development -bash scripts/validate-docker-consistency.sh all - -# 2) Env-less Modus (empfohlen) -DOCKER_SSOT_MODE=envless bash scripts/docker-build.sh --versions -DOCKER_SSOT_MODE=envless bash scripts/generate-compose-files.sh all development -DOCKER_SSOT_MODE=envless bash scripts/validate-docker-consistency.sh all -``` - -Alternative (persistente Shell-Variante): - -```bash -export DOCKER_SSOT_MODE=envless -bash scripts/docker-build.sh --versions -bash scripts/generate-compose-files.sh all development -bash scripts/validate-docker-consistency.sh all -``` - -#### CI-Schutz – lokal reproduzieren (getrennte/verkettete Befehle) - -```bash -# Compat -bash scripts/docker-versions-update.sh sync && \ - bash scripts/generate-compose-files.sh all development && \ - bash scripts/validate-docker-consistency.sh all && \ - git diff --name-only # sollte leer sein - -# Env-less (Variante A: prefix) -DOCKER_SSOT_MODE=envless bash scripts/generate-compose-files.sh all development && \ - DOCKER_SSOT_MODE=envless bash scripts/validate-docker-consistency.sh all && \ - git diff --name-only # sollte leer sein - -# Env-less (Variante B: export) -export DOCKER_SSOT_MODE=envless -bash scripts/generate-compose-files.sh all development && \ - bash scripts/validate-docker-consistency.sh all && \ - git diff --name-only # sollte leer sein -``` - -### Deployment (klarstellen, falls SSoT vorausgeht) - -```bash -# Nur Infrastruktur -# Wenn eine handgeschriebene docker-compose.yaml existiert: -docker compose -f docker-compose.yaml up -d -# Falls Compose-Files generiert werden: -docker compose -f docker-compose.services.yaml up -d - -# Services via Gradle -a) Einzeldienst -./gradlew :backend:services:results:results-service:bootRun -b) Falls unterstützt: alle (oder Aggregator) -./gradlew bootRun -``` - -**Details**: Siehe Abschnitt "Docker Single Source of Truth (SSoT)" weiter unten - ---- - -## 🧪 Testing - -### Unit Tests - -```bash - ./gradlew test -``` - -### Integration Tests - -```bash - ./gradlew integrationTest -``` - -### Spezifisches Modul testen - -```bash - ./gradlew :backend:services:results:results-service:test -``` - ---- - -## 🚢 Deployment - -### Lokale Entwicklung - -#### Nur Infrastruktur (Postgres, Redis, Kafka, Keycloak) - -```bash - docker compose -f docker-compose.yaml up -d -``` - -#### Services über Gradle - -```bash - ./gradlew bootRun -``` - ---- - -## Docker Single Source of Truth (SSoT)—Details - -Dieser Abschnitt beschreibt den lokalen Workflow für die zentrale Docker-Versionsverwaltung. - -### TL;DR – Zwei Betriebsmodi - -- **Kompatibilitätsmodus (Standard)**: `build-args/*.env` werden aus `versions.toml` generiert - - ```bash - bash scripts/docker-versions-update.sh sync - bash scripts/generate-compose-files.sh all development - bash scripts/validate-docker-consistency.sh all - ``` - -- **Env-less Modus (Empfohlen)**: Keine `build-args/*.env` nötig – direkter Export aus `versions.toml` - - ```bash - DOCKER_SSOT_MODE=envless bash scripts/docker-build.sh --versions - DOCKER_SSOT_MODE=envless bash scripts/generate-compose-files.sh all development - DOCKER_SSOT_MODE=envless bash scripts/validate-docker-consistency.sh all - ``` - -### Makefile-Befehle - -Das Projekt verwendet ein umfassendes Makefile mit ~50 Befehlen für alle Development-Workflows: - -```bash -make help # Zeigt alle verfügbaren Befehle -``` - -**Wichtigste Befehle:** - -```bash -make full-up # Startet komplettes System (Infra + Services + Clients) -make services-up # Startet Backend (Infra + Microservices) -make dev-up # Startet Development-Environment -make test # Führt Integration-Tests aus -make health-check # Prüft System-Health -``` - -**SSoT-Befehle:** - -```bash -make docker-sync # Synchronisiert versions.toml -> build-args/*.env -make docker-compose-gen # Generiert Docker Compose Files -make docker-validate # Validiert Docker SSoT Konsistenz -``` - -**Vollständige Referenz:** Siehe `Makefile` (`make help`) und `docs/02_Onboarding/Development/start-local.md`. - -### Was ist die Single Source of Truth? - -- **`docker/versions.toml`** enthält alle Versionsangaben (Gradle, Java, Node, Nginx, Postgres, Redis, etc.) -- **Env-less**: `docker/build-args/*.env` sind optional; Variablen zur Laufzeit aus `versions.toml` -- **docker-compose*.yml** werden generiert und referenzieren nur zentrale `DOCKER_*`-Variablen -- **Dockerfiles** deklarieren ARGs ohne Default-Werte - -### Versionen ändern - -```bash - bash scripts/docker-versions-update.sh update gradle 9.2.1 - bash scripts/docker-versions-update.sh update node 22.21.0 - bash scripts/docker-versions-update.sh update postgres 16-alpine -``` - -Danach: `generate` + `validate` ausführen! - -### CI-Schutz - -Die CI validiert Docker SSoT in beiden Modi (Matrix: compat + envless). - -**Lokal reproduzieren**: - -#### Compat - -```bash -bash scripts/docker-versions-update.sh sync && \ - bash scripts/generate-compose-files.sh all development && \ - bash scripts/validate-docker-consistency.sh all && \ - git diff --name-only # sollte leer sein -``` - -#### Env-less - -```bash -DOCKER_SSOT_MODE=envless bash scripts/generate-compose-files.sh all development && \ - DOCKER_SSOT_MODE=envless bash scripts/validate-docker-consistency.sh all && \ - git diff --name-only # sollte leer sein -``` - ---- - -## 🔄 Automatisierte Workflows - -| Workflow | Zweck | Trigger | -|------------------------------------------------------------------|--------------------------------------|-------------------| -| [ci-main.yml](.github/workflows/ci-main.yml) | Build, Test, OpenAPI-Lint, Docs-Lint | Push/PR | -| [ssot-guard.yml](.github/workflows/ssot-guard.yml) | Docker SSoT Validierung | Push/PR | -| [docs-kdoc-sync.yml](.github/workflows/docs-kdoc-sync.yml) | KDoc → YouTrack Sync | workflow_dispatch | -| [integration-tests.yml](.github/workflows/integration-tests.yml) | Integration Tests | Push/PR | -| [deploy-proxmox.yml](.github/workflows/deploy-proxmox.yml) | Deployment zu Proxmox | workflow_dispatch | - ---- - -## 📜 Lizenz - -[MIT License](LICENSE) +Für detailliertere Anleitungen, wie z.B. das Starten einzelner Services oder das Frontend-Setup, siehe die **[-> Lokale Setup-Anleitung](./docs/02_Onboarding/start-local.md)**. --- ## 🤝 Contributing -Bitte lies [docs/02_Onboarding/Development/branchschutz-und-pr-workflow.md](docs/02_Onboarding/Development/branchschutz-und-pr-workflow.md) für den -PR-Workflow. +Beiträge sind willkommen. Bitte beachte unseren [**-> Branch- und PR-Workflow**](./docs/02_Onboarding/branchschutz-und-pr-workflow.md). ---- +## 📜 Lizenz -## 📞 Support & Kontakt - -- **Bugs**: [GitHub Issues](https://github.com/StefanMoCoAt/meldestelle/issues) -- **Discussions**: [GitHub Discussions](https://github.com/StefanMoCoAt/meldestelle/discussions) -- **Dokumentation**: [YouTrack Wissensdatenbank](https://meldestelle-pro.youtrack.cloud/articles/MP-A-24) - ---- - -**Version**: 2.0.0 (nach Dokumentations-Refactoring) -**letzte Aktualisierung**: 31. Oktober 2025 +Dieses Projekt steht unter der [MIT License](LICENSE). diff --git a/GeminiBerichte/Gradle_Kotlin_DSL_Primer.md b/_backup/GeminiBerichte/Gradle_Kotlin_DSL_Primer.md similarity index 100% rename from GeminiBerichte/Gradle_Kotlin_DSL_Primer.md rename to _backup/GeminiBerichte/Gradle_Kotlin_DSL_Primer.md diff --git a/GeminiBerichte/Tech-Stack_Referenz_Kotlin_2-3-0_Java-25_KMP.md b/_backup/GeminiBerichte/Tech-Stack_Referenz_Kotlin_2-3-0_Java-25_KMP.md similarity index 100% rename from GeminiBerichte/Tech-Stack_Referenz_Kotlin_2-3-0_Java-25_KMP.md rename to _backup/GeminiBerichte/Tech-Stack_Referenz_Kotlin_2-3-0_Java-25_KMP.md diff --git a/GeminiBerichte/WhatsNew_Kotlin_2-3-0_KotlinDocumentation.md b/_backup/GeminiBerichte/WhatsNew_Kotlin_2-3-0_KotlinDocumentation.md similarity index 99% rename from GeminiBerichte/WhatsNew_Kotlin_2-3-0_KotlinDocumentation.md rename to _backup/GeminiBerichte/WhatsNew_Kotlin_2-3-0_KotlinDocumentation.md index db359e25..24cb1eb3 100644 --- a/GeminiBerichte/WhatsNew_Kotlin_2-3-0_KotlinDocumentation.md +++ b/_backup/GeminiBerichte/WhatsNew_Kotlin_2-3-0_KotlinDocumentation.md @@ -4,7 +4,7 @@ LanguageMultiplatform * [Home](home.html) * [Get started](getting-started.html) -* [Take Kotlin tour](kotlin-tour-welcome.html) +* [Take a Kotlin tour](kotlin-tour-welcome.html) * What's new in Kotlin * [Kotlin 2.3.0](whatsnew23.html) @@ -1138,4 +1138,4 @@ Kotlin™ is protected under the [Kotlin Foundation](https://kotlinlang.org/fou [ -](https://www.jetbrains.com/)Supported and developed by [JetBrains](https://www.jetbrains.com/) \ No newline at end of file +](https://www.jetbrains.com/)Supported and developed by [JetBrains](https://www.jetbrains.com/) diff --git a/JunieBerichte/Gradle Kotlin DSL Primer.pdf b/_backup/JunieBerichte/Gradle Kotlin DSL Primer.pdf similarity index 100% rename from JunieBerichte/Gradle Kotlin DSL Primer.pdf rename to _backup/JunieBerichte/Gradle Kotlin DSL Primer.pdf diff --git a/JunieBerichte/What's new in Kotlin 2.3.0 _ Kotlin Documentation.pdf b/_backup/JunieBerichte/What's new in Kotlin 2.3.0 _ Kotlin Documentation.pdf similarity index 100% rename from JunieBerichte/What's new in Kotlin 2.3.0 _ Kotlin Documentation.pdf rename to _backup/JunieBerichte/What's new in Kotlin 2.3.0 _ Kotlin Documentation.pdf diff --git a/JunieBerichte/Wiederherstellung-Strukturverbesserung_2-1-26.md b/_backup/JunieBerichte/Wiederherstellung-Strukturverbesserung_2-1-26.md similarity index 100% rename from JunieBerichte/Wiederherstellung-Strukturverbesserung_2-1-26.md rename to _backup/JunieBerichte/Wiederherstellung-Strukturverbesserung_2-1-26.md diff --git a/JunieBerichte/dockerCompose_apiGateway_log_31-12_00-05.txt b/_backup/JunieBerichte/dockerCompose_apiGateway_log_31-12_00-05.txt similarity index 100% rename from JunieBerichte/dockerCompose_apiGateway_log_31-12_00-05.txt rename to _backup/JunieBerichte/dockerCompose_apiGateway_log_31-12_00-05.txt diff --git a/JunieBerichte/gateway-test_stacktrace_30-12-25_16-00.txt b/_backup/JunieBerichte/gateway-test_stacktrace_30-12-25_16-00.txt similarity index 100% rename from JunieBerichte/gateway-test_stacktrace_30-12-25_16-00.txt rename to _backup/JunieBerichte/gateway-test_stacktrace_30-12-25_16-00.txt diff --git a/JunieBerichte/gradle_apiGateway_console_31-12_00-05.txt b/_backup/JunieBerichte/gradle_apiGateway_console_31-12_00-05.txt similarity index 100% rename from JunieBerichte/gradle_apiGateway_console_31-12_00-05.txt rename to _backup/JunieBerichte/gradle_apiGateway_console_31-12_00-05.txt diff --git a/backend/README.md b/backend/README.md new file mode 100644 index 00000000..f347ab2b --- /dev/null +++ b/backend/README.md @@ -0,0 +1,6 @@ +# Backend Module + +Dieses Modul enthält den gesamten Code für die Backend-Services und die zugehörige Infrastruktur (z.B. API-Gateway). + +**Die vollständige Dokumentation befindet sich hier:** +[**-> docs/05_Backend/README.md**](../docs/05_Backend/README.md) diff --git a/contracts/README.md b/contracts/README.md new file mode 100644 index 00000000..5e9f9142 --- /dev/null +++ b/contracts/README.md @@ -0,0 +1,6 @@ +# Contracts Module + +Dieses Modul enthält die geteilten API-Definitionen (Data Transfer Objects, DTOs) und Schnittstellen, die als "Vertrag" zwischen den verschiedenen Services (z.B. Backend und Frontend) dienen. + +**Die Dokumentation für die Services, die diese Verträge implementieren, befindet sich hier:** +[**-> docs/05_Backend/README.md**](../docs/05_Backend/README.md) diff --git a/core/README.md b/core/README.md new file mode 100644 index 00000000..55253a24 --- /dev/null +++ b/core/README.md @@ -0,0 +1,6 @@ +# Core Module + +Dieses Modul enthält projektübergreifende Kern-Logik und Utility-Klassen, die sowohl vom Backend als auch vom Frontend genutzt werden können. + +**Die vollständige Dokumentation befindet sich hier:** +[**-> docs/03_Domain/01_Core_Model/README.md**](../docs/03_Domain/01_Core_Model/README.md) diff --git a/platform/README-PLATFORM.md b/docs/01_Architecture/03_Build_System_Platform_Module.md similarity index 97% rename from platform/README-PLATFORM.md rename to docs/01_Architecture/03_Build_System_Platform_Module.md index c7ec6023..2448afa5 100644 --- a/platform/README-PLATFORM.md +++ b/docs/01_Architecture/03_Build_System_Platform_Module.md @@ -1,4 +1,4 @@ -# Platform Module +# Architektur: Das Platform-Modul ## Überblick @@ -10,10 +10,12 @@ Das Modul agiert als eine interne "Single Source of Truth" für alle externen Bi Das Platform-Modul ist in drei spezialisierte Untermodule aufgeteilt, die jeweils eine klare Aufgabe haben: +```text platform/ ├── platform-bom/ # Bill of Materials (BOM) - Erzwingt Versionen ├── platform-dependencies/ # Bündelt gemeinsame Laufzeit-Abhängigkeiten └── platform-testing/ # Bündelt gemeinsame Test-Abhängigkeiten +``` ### `platform-bom` @@ -52,6 +54,3 @@ Analog zu `platform-dependencies`, aber speziell für Test-Bibliotheken. ``` * **Optimierung:** Dieses Modul nutzt die in `libs.versions.toml` definierten `[bundles]`, um die Build-Datei extrem kurz und lesbar zu halten. - ---- -**Letzte Aktualisierung**: 31. Juli 2025 diff --git a/docs/01_Architecture/adr/0012-domain-documentation-structure.md b/docs/01_Architecture/adr/0012-domain-documentation-structure.md new file mode 100644 index 00000000..f033ee3d --- /dev/null +++ b/docs/01_Architecture/adr/0012-domain-documentation-structure.md @@ -0,0 +1,68 @@ +# ADR-0012: Strukturierung der Domänen-Dokumentation + +* **Status:** Accepted +* **Datum:** 2026-01-14 +* **Autor:** Documentation & Knowledge Curator + +## Kontext + +Das Projekt "Meldestelle" hat eine komplexe fachliche Domäne, die durch externe Regelwerke (ÖTO, FEI) und implizites +Wissen ("Geschichten") geprägt ist. +Die Menge an Informationen im Verzeichnis `docs/02_Domain` wächst schnell an. Es besteht die Gefahr, dass Informationen +unstrukturiert abgelegt werden, schwer auffindbar sind oder veralten. +Eine klare Struktur ist notwendig, um die "Single Source of Truth" für die Fachlichkeit zu gewährleisten und die +Zusammenarbeit zwischen Domain Experts und Entwicklern zu skalieren. + +## Entscheidung + +Wir strukturieren das Verzeichnis `docs/02_Domain` strikt nach dem Reifegrad und der Art der Information. + +### 1. Die Struktur + +```text +docs/02_Domain/ +├── 00_Glossary.md # Ubiquitous Language (Zentrales Wörterbuch) +├── 01_Core_Model/ # Die "Wahrheit" für die Implementierung (Destillat) +│ ├── Entities/ # Detail-Beschreibungen der Entitäten (Event, Turnier, etc.) +│ ├── Processes/ # Fachliche Prozesse (Nennung, Ergebnis-Erfassung) +│ └── Rules/ # Explizite Geschäftsregeln (Validierungen) +├── 02_Reference/ # Externe Quellen (Read-Only / Referenz) +│ ├── FEI_Regelwerk/ # Original-Texte / Zusammenfassungen FEI +│ ├── OETO_Regelwerk/ # Original-Texte / Zusammenfassungen ÖTO +│ └── Legacy_Specs/ # Alte Pflichtenhefte / Schnittstellen-Dokus +├── 03_Analysis/ # Arbeitsbereich ("Workbench") +│ ├── User_Stories/ # Anforderungen aus Nutzersicht +│ ├── Scenarios/ # Konkrete Beispiele / "Geschichten" +│ └── Workshops/ # Protokolle aus Domain-Workshops +└── README.md # Einstiegspunkt & Navigationshilfe +``` + +### 2. Der Workflow (Information Lifecycle) + +Informationen fließen von "unten nach oben" (von Analyse zu Core Model): + +1. **Input:** Rohdaten (Regelwerke, Geschichten) landen in `02_Reference` oder `03_Analysis`. +2. **Destillation:** Der Domain Expert und der Architect analysieren diese Inputs. +3. **Output:** Das Ergebnis ist ein Eintrag im `01_Core_Model`. Nur was hier steht, darf implementiert werden. +4. **Glossar:** Jeder neue Begriff muss ins `00_Glossary.md`. + +## Konsequenzen + +### Positiv + +* **Klarheit:** Entwickler schauen primär in `01_Core_Model`. Sie müssen nicht hunderte Seiten Regelwerk lesen. +* **Rückverfolgbarkeit:** Jede Entscheidung im Core Model kann auf eine Quelle in Reference oder Analysis verweisen. +* **Skalierbarkeit:** Neue Regelwerke (z.B. WBO) können als neuer Ordner in `Reference` ergänzt werden, ohne das Core + Model sofort zu invalidieren. + +### Negativ + +* **Pflegeaufwand:** Informationen müssen aktiv "destilliert" und verschoben werden. Es darf kein "Data Dump" in + `Analysis` verbleiben. +* **Disziplin:** Das Team muss widerstehen, direkt gegen `Reference`-Dokumente zu implementieren, da diese oft + widersprüchlich oder zu detailreich sind. + +## Status der Migration + +Aktuell liegen viele Dateien flach in `docs/02_Domain` oder in `Reference`. +Eine Migration der bestehenden Dateien in diese neue Struktur ist erforderlich. diff --git a/docs/02_Domain/Development/kdoc-style.md b/docs/02_Onboarding/CodingGuidelines/kdoc-style.md similarity index 100% rename from docs/02_Domain/Development/kdoc-style.md rename to docs/02_Onboarding/CodingGuidelines/kdoc-style.md diff --git a/docs/02_Domain/Development/branchschutz-und-pr-workflow.md b/docs/02_Onboarding/branchschutz-und-pr-workflow.md similarity index 100% rename from docs/02_Domain/Development/branchschutz-und-pr-workflow.md rename to docs/02_Onboarding/branchschutz-und-pr-workflow.md diff --git a/docs/02_Domain/Development/start-local.md b/docs/02_Onboarding/start-local.md similarity index 100% rename from docs/02_Domain/Development/start-local.md rename to docs/02_Onboarding/start-local.md diff --git a/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md b/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md new file mode 100644 index 00000000..59fd42c9 --- /dev/null +++ b/docs/02_Reference/Tech_Stack/Gradle_Kotlin_DSL_Primer.md @@ -0,0 +1,110 @@ +# Gradle Kotlin DSL Primer + +**Quelle:** [Original Gradle Documentation](https://docs.gradle.org/current/userguide/kotlin_dsl.html) +**Kontext:** Dieses Dokument dient als Referenz für die im Projekt verwendete Gradle Kotlin DSL. Es fasst die wichtigsten Konzepte und Syntax-Elemente zusammen. + +--- + +Gradle’s Kotlin DSL offers an alternative to the traditional Groovy DSL, delivering an enhanced editing experience in supported IDEs. + +## Key Concepts + +### Script File Names +* Groovy DSL: `.gradle` +* Kotlin DSL: `.gradle.kts` + +To activate the Kotlin DSL, use the `.gradle.kts` extension for your build scripts, settings file (`settings.gradle.kts`), and initialization scripts (`init.gradle.kts`). + +### Type-safe Model Accessors +The Kotlin DSL replaces Groovy's dynamic resolution with type-safe model accessors for elements contributed by plugins (configurations, tasks, extensions). This provides better IDE support (code completion, refactoring). + +**Example:** +```kotlin +plugins { + `java-library` +} + +dependencies { + // 'api', 'implementation' are type-safe accessors + api("junit:junit:4.13") + implementation("org.apache.commons:commons-lang3:3.12.0") +} + +tasks { + // 'test' is a type-safe accessor for the Test task + test { + useJUnitPlatform() + } +} +``` + +Accessors are available for elements contributed by plugins applied in the `plugins {}` block. For elements created dynamically later in the script, you must fall back to string-based lookups: +```kotlin +configurations.create("custom") + +dependencies { + "custom"("com.google.guava:guava:32.1.2-jre") +} +``` + +### Lazy Property Assignment +The Kotlin DSL supports lazy property assignment using the `=` operator for types like `Property` and `ConfigurableFileCollection`. This is the preferred way over the `set()` method. + +```kotlin +// Instead of: +javaVersion.set(JavaLanguageVersion.of(17)) + +// Use: +javaVersion = JavaLanguageVersion.of(17) +``` + +### Working with Containers +You can interact with containers like `tasks` or `configurations` in several ways: + +1. **Container API (using `named` and `register`):** + ```kotlin + tasks.named("test") { + testLogging.showExceptions = true + } + tasks.register("myCopy") { + from("source") + into("destination") + } + ``` + +2. **Delegated Properties (using `by existing` and `by registering`):** + ```kotlin + val test by tasks.existing(Test::class) { + testLogging.showStackTraces = true + } + val myCopy by tasks.registering(Copy::class) { + from("source") + into("destination") + } + ``` + +### Extra Properties +Access project or task-level extra properties via delegated properties: +```kotlin +// Define an extra property +val myNewProperty by extra("initial value") + +// Read an existing extra property +val myExtraProperty: String by extra +``` + +### Kotlin DSL Plugin (`kotlin-dsl`) +This plugin is essential for developing build logic in Kotlin (e.g., in `buildSrc` or for convention plugins). It automatically applies the Kotlin plugin and adds necessary dependencies like `kotlin-stdlib` and `gradleKotlinDsl()`. + +```kotlin +// buildSrc/build.gradle.kts +plugins { + `kotlin-dsl` +} + +repositories { + mavenCentral() +} +``` + +*(Dies ist eine gekürzte Zusammenfassung. Das Originaldokument enthält detailliertere Informationen.)* diff --git a/docs/02_Reference/Tech_Stack/Konfiguration_Kotlin-2-3-0_Java-25.md b/docs/02_Reference/Tech_Stack/Konfiguration_Kotlin-2-3-0_Java-25.md new file mode 100644 index 00000000..c097aeff --- /dev/null +++ b/docs/02_Reference/Tech_Stack/Konfiguration_Kotlin-2-3-0_Java-25.md @@ -0,0 +1,72 @@ +# Tech-Stack Referenz: Kotlin 2.3.0 & Java 25 (KMP) + +**Kontext:** Dieses Dokument beschreibt die notwendigen Konfigurationen, um Kotlin 2.3.0 mit Java 25 in einem Kotlin Multiplatform (KMP) Projekt mit Gradle 9.x zu verwenden. + +--- + +### 1. Kern-Spezifikationen + +| Komponente | Version | Status | +| --- |----------| --- | +| **Kotlin** | `2.3.0` | Stabil (K2 Compiler standardmäßig aktiv) | +| **Java (JDK)** | `25` | LTS (Long-Term Support) | +| **Gradle** | `9.2.1` | Erforderlich für JDK 25 Support | +| **Android Plugin (AGP)** | `8.8.0+` | Empfohlen für Gradle 9.x Kompatibilität | + +--- + +### 2. Gradle Konfiguration (`build.gradle.kts`) + +Für ein **Kotlin Multiplatform (KMP)** Projekt ist die Java Toolchain-Konfiguration entscheidend, um sicherzustellen, dass der Kotlin-Compiler und die JVM-Targets Java 25 korrekt ansprechen. + +```kotlin +plugins { + kotlin("multiplatform") version "2.3.0" + id("com.android.library") version "8.8.0" // Falls Android Target genutzt wird +} + +kotlin { + // Globale Toolchain-Definition für alle JVM/Android Targets + jvmToolchain { + languageVersion.set(JavaLanguageVersion.of(25)) + } + + jvm { + compilations.all { + compilerOptions.configure { + jvmTarget.set(org.jetbrains.kotlin.gradle.dsl.JvmTarget.JVM_25) + } + } + } + + // Weitere Targets (Beispiel iOS) + iosArm64() + iosSimulatorArm64() +} +``` + +--- + +### 3. Gradle Wrapper Update + +Damit das Projekt Java 25 erkennt, muss der Wrapper auf dem neuesten Stand sein: + +**Terminal-Befehl:** +```bash +./gradlew wrapper --gradle-version 9.2.1 --distribution-type all +``` + +--- + +### 4. Wichtige Kompatibilitätshinweise + +* **IDE-Version:** IntelliJ IDEA 2025.3 (oder neuer) wird für die volle Unterstützung von JDK 25 und dem Kotlin 2.3.0 Plugin empfohlen. +* **K2 Compiler:** Kotlin 2.3.0 nutzt den K2-Compiler. +* **Bytecode:** Java 25 Bytecode wird nur generiert, wenn das `jvmTarget` explizit auf `25` gesetzt ist. + +--- + +### 5. Bekannte Features in diesem Setup + +* **Java 25 Features:** Unterstützung für die finalen Versionen von *Scoped Values* und *Structured Concurrency*. +* **Kotlin 2.3.0 Features:** Nutzung von `explicit backing fields` und dem verbesserten `unused return value` Checker. diff --git a/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md b/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md new file mode 100644 index 00000000..46135d92 --- /dev/null +++ b/docs/02_Reference/Tech_Stack/Kotlin_2-3-0_ReleaseNotes.md @@ -0,0 +1,72 @@ +# What's new in Kotlin 2.3.0 | Kotlin Documentation + +**Quelle:** [Original Kotlin Documentation](https://kotlinlang.org/docs/whatsnew23.html) +**Datum des Dokuments:** 16. Dezember 2025 +**Kontext:** Dieses Dokument dient als Referenz für die im Projekt verwendete Kotlin-Version. + +--- + +The Kotlin 2.3.0 release is out! Here are the main highlights: + +* **Language:** More stable and default features, unused return value checker, explicit backing fields, and changes to context-sensitive resolution. +* **Kotlin/JVM:** Support for Java 25. +* **Kotlin/Native:** Improved interop through Swift export, faster build time for release tasks, C and Objective-C library import in Beta. +* **Kotlin/Wasm:** Fully qualified names and new exception handling proposal enabled by default, as well as new compact storage for Latin-1 characters. +* **Kotlin/JS:** New experimental suspend function export, `LongArray` representation, unified companion object access, and more. +* **Gradle:** Compatibility with Gradle 9.0 and a new API for registering generated sources. +* **Compose compiler:** Stack traces for minified Android applications. +* **Standard library:** Stable time tracking functionality and improved UUID generation and parsing. + +## Language + +Kotlin 2.3.0 focuses on feature stabilization, introduces a new mechanism for detecting unused return values, and improves context-sensitive resolution. + +### Stable features + +The following features have now graduated to Stable: +* Support for nested type aliases +* Data-flow-based exhaustiveness checks for `when` expressions + +### Features enabled by default +* Support for `return` statements in expression bodies with explicit return types is now enabled by default. + +### Experimental: Unused return value checker +Kotlin 2.3.0 introduces the unused return value checker to help prevent ignored results. It warns you whenever an expression returns a value other than `Unit` or `Nothing` and isn't used. + +### Experimental: Explicit backing fields +A new syntax for explicitly declaring the underlying field that holds a property's value, simplifying the common backing properties pattern. + +## Kotlin/JVM: Support for Java 25 +Starting with Kotlin 2.3.0, the compiler can generate classes containing Java 25 bytecode. + +## Kotlin/Native +* **Improved Swift Export:** Direct mapping for native enum classes and variadic function parameters. +* **C and Objective-C Library Import is in Beta:** Better diagnostics for binary compatibility issues. +* **Faster Build Time:** Up to 40% faster release builds, especially for iOS targets. + +## Kotlin/Wasm +* **Fully Qualified Names Enabled by Default:** `KClass.qualifiedName` is now available at runtime without extra configuration. +* **Compact Storage for Latin-1 Characters:** Reduces metadata and binary size. +* **New Exception Handling for `wasmWasi`:** Enabled by default for better compatibility with modern WebAssembly runtimes. + +## Kotlin/JS +* **Experimental Suspend Function Export:** Export suspend functions directly to JavaScript using `@JsExport`. +* **`BigInt64Array` for `LongArray`:** Simplifies interop with JavaScript APIs that use typed arrays. +* **Unified Companion Object Access:** Consistent access to companion objects in interfaces across all JS module systems. +* **`@JsStatic` in Interfaces:** Now supported in interfaces with companion objects. +* **`@JsQualifier` on individual declarations:** Can now be applied to individual functions and classes. +* **`@JsExport.Default`:** New annotation for generating JavaScript default exports. + +## Gradle +* Fully compatible with Gradle 7.6.3 through 9.0.0. +* Minimum supported Android Gradle plugin version is now 8.2.2. +* New experimental API for registering generated sources. + +## Standard library +* **Stable Time Tracking:** `kotlin.time.Clock` and `kotlin.time.Instant` are now stable. +* **Improved UUID Generation:** New functions like `Uuid.parseOrNull()`, `Uuid.generateV4()`, and `Uuid.generateV7()`. + +## Compose compiler +* **Stack Traces for Minified Android Apps:** The compiler now outputs ProGuard mappings for Compose stack traces when applications are minified by R8. + +*(Dies ist eine gekürzte Zusammenfassung. Das Originaldokument enthält detailliertere Informationen und Code-Beispiele.)* diff --git a/docs/03_Agents/Playbooks/Curator.md b/docs/03_Agents/Playbooks/Curator.md deleted file mode 100644 index 982325b8..00000000 --- a/docs/03_Agents/Playbooks/Curator.md +++ /dev/null @@ -1,19 +0,0 @@ -# Playbook: Documentation & Knowledge Curator - -## Zweck -Der Curator sorgt dafür, dass Wissen **auffindbar, konsistent und versioniert** bleibt. Er ist die „letzte Rolle“ jeder Session. - -## Kernregeln -* `docs/` ist die **Wahrheit**. -* Jede Session endet mit **genau einem** Artefakt (ADR/Reference/How-to/Journal). -* Links/Verweise setzen (auf relevante Code-Stellen, Dateien, ADRs). - -## Ablauf (leichtgewichtig) -1. Thema der Session in 1 Satz festhalten. -2. Ergebnis-Typ wählen (welches Artefakt passt?). -3. Artefakt erstellen/aktualisieren. -4. Offene Fragen in den passenden „Parking Lot“ übernehmen. -5. Optional: kurzes Journal-Update, wenn das Artefakt nicht selbsterklärend ist. - -## Parking Lots -* Technisch/Architektur: `docs/01_Architecture/questions.md` (falls benötigt) diff --git a/docs/03_Domain/00_Glossary.md b/docs/03_Domain/00_Glossary.md new file mode 100644 index 00000000..bc223343 --- /dev/null +++ b/docs/03_Domain/00_Glossary.md @@ -0,0 +1,8 @@ + # Glossar der Domäne "Meldestelle" + + Dieses Dokument definiert die Ubiquitous Language des Projekts. + + * **Event:** Der organisatorische Rahmen für eine Veranstaltung. + * **Turnier:** Die administrative, regelbasierte Einheit innerhalb eines Events. + * ... + diff --git a/docs/02_Domain/01_Core_Entities.md b/docs/03_Domain/01_Core_Model/Entities/Overview.md similarity index 100% rename from docs/02_Domain/01_Core_Entities.md rename to docs/03_Domain/01_Core_Model/Entities/Overview.md diff --git a/docs/03_Domain/01_Core_Model/Entities/README.md b/docs/03_Domain/01_Core_Model/Entities/README.md new file mode 100644 index 00000000..df67967c --- /dev/null +++ b/docs/03_Domain/01_Core_Model/Entities/README.md @@ -0,0 +1,6 @@ +# Entitäten des Kern-Modells + +Dieses Verzeichnis enthält detaillierte Beschreibungen der zentralen fachlichen Entitäten des "Meldestelle"-Projekts. +Jede Datei beschreibt eine Entität und ihre Attribute. + +Diese Dokumente sind die "Wahrheit" für die Implementierung. diff --git a/docs/02_Domain/Reference/FEI_01-2026/FEI-2026_General-Regulations_Effective-1-January2026_clean-Final_0.md b/docs/03_Domain/02_Reference/FEI_Regelwerk/FEI-2026_General-Regulations_Effective-1-January2026_clean-Final_0.md similarity index 100% rename from docs/02_Domain/Reference/FEI_01-2026/FEI-2026_General-Regulations_Effective-1-January2026_clean-Final_0.md rename to docs/03_Domain/02_Reference/FEI_Regelwerk/FEI-2026_General-Regulations_Effective-1-January2026_clean-Final_0.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md b/docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md rename to docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Meldestelle_Pflichtenheft_V2.4_2021-07-28.md b/docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Pflichtenheft_V2.4_2021-07-28.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Meldestelle_Pflichtenheft_V2.4_2021-07-28.md rename to docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Pflichtenheft_V2.4_2021-07-28.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_A-Teil-Allgemeiner-Teil_16-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_A-Teil-Allgemeiner-Teil_16-12-2025.md similarity index 99% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_A-Teil-Allgemeiner-Teil_16-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_A-Teil-Allgemeiner-Teil_16-12-2025.md index 146360c6..1603eaa0 100644 --- a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_A-Teil-Allgemeiner-Teil_16-12-2025.md +++ b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_A-Teil-Allgemeiner-Teil_16-12-2025.md @@ -2254,7 +2254,7 @@ sprüchen zur Verfügung zu stehen. 4. Die Zusage der Richtertätigkeit ist dem Veranstalter unter Anga- be allfälliger Einschränkungen schriftlich zu bestätigen. 5. Aufgaben des/der Stewards bzw. Richters am Abreiteplatz. -Aufsicht am Abreiteplatz: Aufsicht des Trainings und des Abrei- +Aufsicht am Abreitplatz: Aufsicht des Trainings und des Abrei- tens, Überprüfung der Ausrüstung von Reiter und Pferd, der Hilfsmittel und insbesondere der Sicherheitsausrüstung. Erhalten eines geordneten Abreitens für alle Teilnehmer mit diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_B-Teil-Besondere-Bestimmungen_17-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_B-Teil-Besondere-Bestimmungen_17-12-2025.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_B-Teil-Besondere-Bestimmungen_17-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_B-Teil-Besondere-Bestimmungen_17-12-2025.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_C-Teil-Rechtsordnung_17-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_C-Teil-Rechtsordnung_17-12-2025.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_C-Teil-Rechtsordnung_17-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_C-Teil-Rechtsordnung_17-12-2025.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_D-Teil-Durchführungsbestimmungen_17-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_D-Teil-Durchführungsbestimmungen_17-12-2025.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_D-Teil-Durchführungsbestimmungen_17-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_D-Teil-Durchführungsbestimmungen_17-12-2025.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_E-Teil-Gebuehrenordnung_18-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_E-Teil-Gebuehrenordnung_18-12-2025.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_E-Teil-Gebuehrenordnung_18-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_E-Teil-Gebuehrenordnung_18-12-2025.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_F-Teil-Stichwortverzeichnis_18-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_F-Teil-Stichwortverzeichnis_18-12-2025.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_F-Teil-Stichwortverzeichnis_18-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_F-Teil-Stichwortverzeichnis_18-12-2025.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Inhaltsverzeichnis-Hoehentabelle_18-12-2025.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_Inhaltsverzeichnis-Hoehentabelle_18-12-2025.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Inhaltsverzeichnis-Hoehentabelle_18-12-2025.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_Inhaltsverzeichnis-Hoehentabelle_18-12-2025.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Meldestelle_Update-Ergebnisfile.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_Meldestelle_Update-Ergebnisfile.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/OETO-2026_Meldestelle_Update-Ergebnisfile.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/OETO-2026_Meldestelle_Update-Ergebnisfile.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/Struktur-Meisterschafts-Cup-Reglements_OETO.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/Struktur-Meisterschafts-Cup-Reglements_OETO.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/Struktur-Meisterschafts-Cup-Reglements_OETO.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/Struktur-Meisterschafts-Cup-Reglements_OETO.md diff --git a/docs/02_Domain/Reference/OETO_01-2026/Struktur_Turnier-Ausschreibung-gemäß-OETO.md b/docs/03_Domain/02_Reference/OETO_Regelwerk/Struktur_Turnier-Ausschreibung-gemäß-OETO.md similarity index 100% rename from docs/02_Domain/Reference/OETO_01-2026/Struktur_Turnier-Ausschreibung-gemäß-OETO.md rename to docs/03_Domain/02_Reference/OETO_Regelwerk/Struktur_Turnier-Ausschreibung-gemäß-OETO.md diff --git a/docs/02_Domain/Reference/Geschichten/Anekdote_Meldestelle.md b/docs/03_Domain/03_Analysis/Scenarios/Anekdote_Meldestelle.md similarity index 100% rename from docs/02_Domain/Reference/Geschichten/Anekdote_Meldestelle.md rename to docs/03_Domain/03_Analysis/Scenarios/Anekdote_Meldestelle.md diff --git a/docs/04_Agents/Playbooks/Architect.md b/docs/04_Agents/Playbooks/Architect.md new file mode 100644 index 00000000..1718fe4d --- /dev/null +++ b/docs/04_Agents/Playbooks/Architect.md @@ -0,0 +1,27 @@ +# Playbook: Lead Architect (System & Build) + +## Beschreibung +Verantwortlich für die Gesamtarchitektur, das Build-System, die Modulstruktur und die Integration der Komponenten. Agiert als primärer technischer Analyst und Koordinator zwischen den anderen Agenten. + +## System Prompt + +```text +Software Architect + +Du bist der Lead Software Architect des Projekts "Meldestelle". +Kommuniziere ausschließlich auf Deutsch. + +Deine Expertise umfasst: +- Kotlin 2.3 & Java 25 im Enterprise-Umfeld. +- Gradle Build-Optimierung (Composite Builds, Version Catalogs, Platform BOMs). +- Microservices-Architektur mit Spring Cloud (Gateway, Consul, CircuitBreaker). +- Infrastruktur-Orchestrierung mit Docker Compose. +- "Docs-as-Code"-Prinzipien und die Pflege der zentralen Projektdokumentation. + +Deine Aufgaben: +1. Überwache die Einhaltung der Architektur-Regeln (Trennung von API, Domain, Infrastructure). +2. Verwalte zentrale Abhängigkeiten im `platform`-Modul und `libs.versions.toml`. +3. Löse komplexe Integrationsprobleme zwischen Services, Gateway und Frontend. +4. Achte strikt darauf, dass keine Versionen hardcodiert werden, sondern über das Platform-Modul referenziert werden. Ausnahmen müssen dokumentiert werden. +5. Pflege die übergreifende Projektdokumentation im `/docs`-Verzeichnis, insbesondere im `01_Architecture`-Bereich. +``` diff --git a/docs/04_Agents/Playbooks/BackendDeveloper.md b/docs/04_Agents/Playbooks/BackendDeveloper.md new file mode 100644 index 00000000..2bf418a9 --- /dev/null +++ b/docs/04_Agents/Playbooks/BackendDeveloper.md @@ -0,0 +1,30 @@ +# Playbook: Senior Backend Developer (Spring Boot & DDD) + +## Beschreibung +Spezialist für die Implementierung der Fachlogik in den Backend-Services. + +## System Prompt + +```text +Backend Developer + +Du bist ein Senior Backend Developer, spezialisiert auf Kotlin und Spring Boot 3.5.x. +Du arbeitest an den Microservices und folgst den "Docs-as-Code"-Prinzipien. +Kommuniziere ausschließlich auf Deutsch. + +Technologien & Standards: +- Framework: Spring Boot 3.5.9, Spring WebFlux (Gateway), Spring MVC (Services). +- DB: PostgreSQL, Redis, Mongo. +- Architektur: Domain-Driven Design (DDD). Halte Domänenlogik rein und getrennt von Infrastruktur. +- Testing: JUnit 5, MockK, Testcontainers (Postgres, Keycloak). +- API: REST, OpenAPI (SpringDoc). +- **Sync-Strategie:** Implementierung von Delta-Sync APIs (basierend auf UUIDv7/Timestamps) für Offline-First Clients. + +Regeln: +1. Nutze `val` und Immutability wo immer möglich. +2. Implementiere Business-Logik in der Domain-Schicht, nicht im Controller. +3. Nutze Testcontainers für Integrationstests. +4. Beachte die Modul-Struktur: `:api` (Interfaces/DTOs), `:domain` (Core Logic), `:service` (Application/Infra). +5. **KMP-Awareness:** Achte darauf, dass Code in `:api` und `:domain` Modulen KMP-kompatibel bleibt (keine Java-Dependencies). +6. **Dokumentation:** Aktualisiere die Implementierungs-Dokumentation für deinen Service unter `/docs/05_Backend/Services/`. +``` diff --git a/docs/04_Agents/Playbooks/Curator.md b/docs/04_Agents/Playbooks/Curator.md new file mode 100644 index 00000000..9831ecac --- /dev/null +++ b/docs/04_Agents/Playbooks/Curator.md @@ -0,0 +1,30 @@ +# Playbook: Documentation & Knowledge Curator (Pflichtrolle) + +## Beschreibung +Sorgt dafür, dass jede Session ein dauerhaft auffindbares Ergebnis in `docs/` hinterlässt. +Er ist die "letzte Rolle" jeder Session und verhindert Wissensverlust. + +## System Prompt + +```text +Documentation & Knowledge Curator + +Du bist der Documentation & Knowledge Curator für das Projekt "Meldestelle". +Kommuniziere ausschließlich auf Deutsch. + +Ziel: +- Wissen ist auffindbar, konsistent und versioniert. +- Jede Session endet mit genau einem Artefakt in `docs/`. + +Regeln: +1. Single Source of Truth ist `docs/`. +2. Am Ende der Session entsteht genau ein Artefakt: + - ADR (`docs/01_Architecture/adr/`) + - Reference / technische Wahrheit pro System (z.B. `docs/05_Backend/Services/.md`) + - How-to / Runbook (passender Bereich) + - Journal Entry (`docs/99_Journal/`) +3. Setze Links auf betroffene Code-Stellen/Dateien. +4. Wenn etwas unklar ist: offene Fragen explizit listen und im Artefakt festhalten. + +Du erfindest keine Repo-Fakten. Wenn dir Quellen fehlen, frag nach Dateipfaden oder markiere Annahmen. +``` diff --git a/docs/04_Agents/Playbooks/DevOpsEngineer.md b/docs/04_Agents/Playbooks/DevOpsEngineer.md new file mode 100644 index 00000000..68fa9213 --- /dev/null +++ b/docs/04_Agents/Playbooks/DevOpsEngineer.md @@ -0,0 +1,27 @@ +# Playbook: Infrastructure & DevOps Engineer + +## Beschreibung +Verantwortlich für die Laufzeitumgebung, Sicherheit und Observability. + +## System Prompt + +```text +DevOps & Infrastructure Engineer + +Du bist ein DevOps & Infrastructure Engineer und folgst den "Docs-as-Code"-Prinzipien. +Du verwaltest die Docker-Umgebung und die operativen Aspekte der "Meldestelle". +Kommuniziere ausschließlich auf Deutsch. + +Technologien: +- Container: Docker, Docker Compose. +- IAM: Keycloak 26 (OIDC/OAuth2 Konfiguration). +- Service Discovery: HashiCorp Consul. +- Monitoring: Prometheus, Grafana, Zipkin, Micrometer Tracing. +- DB Ops: PostgreSQL Administration, Flyway Migrationen. + +Aufgaben: +1. Stelle sicher, dass alle Container im `docker-compose.yaml` korrekt konfiguriert und vernetzt sind. +2. Verwalte Secrets und Umgebungsvariablen (`.env`). +3. Konfiguriere Keycloak Realms und Clients. +4. **Dokumentation:** Pflege die Infrastruktur-Dokumentation unter `/docs/07_Infrastructure/`. +``` diff --git a/docs/04_Agents/Playbooks/DomainExpert.md b/docs/04_Agents/Playbooks/DomainExpert.md new file mode 100644 index 00000000..6dee544a --- /dev/null +++ b/docs/04_Agents/Playbooks/DomainExpert.md @@ -0,0 +1,28 @@ +# Playbook: Domain/Product Expert (optional, Diskussion/Sparring) + +## Beschreibung +Agiert als "Übersetzer" zwischen der Vision des Product Owners und den technischen Anforderungen. Er ist der fachliche Sparringspartner, der Regelwerke (ÖTO, FEI), Pflichtenhefte und Anekdoten aus der Praxis analysiert, um daraus ein konsistentes und umsetzbares Domänenmodell abzuleiten. + +## System Prompt + +```text +Domain/Product Expert + +Du bist der Domain/Product Expert für das Projekt "Meldestelle", spezialisiert auf den Reitsport. +Kommuniziere ausschließlich auf Deutsch. + +Ziel: +- Die fachliche Vision des Product Owners in eine klare, strukturierte und umsetzbare Form überführen. +- Fachliche Unklarheiten, Mehrdeutigkeiten und Lücken in den Anforderungen aufdecken. +- Sicherstellen, dass die technische Lösung die realen Prozesse und Regeln (ÖTO, FEI) exakt abbildet. + +Arbeitsweise: +1. Analysiere bereitgestellte Quelldokumente (Regelwerke, Pflichtenhefte, Anekdoten), um die Domäne tiefgreifend zu verstehen. +2. Stelle strukturierte Rückfragen, um Annahmen zu validieren und Anforderungen zu schärfen. +3. Formuliere Optionen mit klaren Vor- und Nachteilen als Entscheidungsgrundlage. +4. Leite aus fachlichen Entscheidungen direkt die Konsequenzen für das Datenmodell, die Benutzerrollen und die Systemprozesse ab. + +Output: +- Formuliere Analyse-Ergebnisse und Datenmodell-Entwürfe so, dass sie direkt als "Single Source of Truth" für die Fachlichkeit in `docs/03_Domain/` übernommen werden können. +- Erstelle die Grundlage für technische ADRs, indem du die fachlichen "Warum"-Fragen beantwortest. +``` diff --git a/docs/04_Agents/Playbooks/FrontendExpert.md b/docs/04_Agents/Playbooks/FrontendExpert.md new file mode 100644 index 00000000..072ff79c --- /dev/null +++ b/docs/04_Agents/Playbooks/FrontendExpert.md @@ -0,0 +1,29 @@ +# Playbook: KMP Frontend Expert + +## Beschreibung +Spezialist für das Frontend "Meldestelle Portal". Fokus auf echte Offline-Fähigkeit (Web & Desktop) und High-Performance UI mit Compose Multiplatform. + +## System Prompt + +```text +Frontend Developer + +Du bist ein Senior Frontend Developer und Experte für Kotlin Multiplatform (KMP). +Du entwickelst das "Meldestelle Portal" für Desktop (JVM) und Web (JS/Wasm) und folgst den "Docs-as-Code"-Prinzipien. +Kommuniziere ausschließlich auf Deutsch. + +Technologien & Standards: +- **UI:** Compose Multiplatform 1.10.x (Material 3). +- **Persistenz (Offline-First):** SQLDelight 2.2.x mit "Async-First" Architektur. +- **State Management:** ViewModel, Kotlin Coroutines/Flow. +- **DI:** Koin 4.x (Compose Integration). +- **Network:** Ktor Client 3.x (Environment-aware Config). +- **Build:** Gradle Version Catalogs (`libs.versions.toml`) mit strikter Nutzung von Bundles. + +Regeln: +1. **Async-First Data Layer:** Alle Datenbank-Interaktionen müssen asynchron (`suspend`) entworfen sein. +2. **Strict KMP Boundaries:** Keine JVM-only Bibliotheken im `commonMain`. +3. **Dependency Management:** Nutze ausschließlich die definierten Bundles in `libs.versions.toml`. +4. **UI-Architektur:** Trenne UI (Composables) strikt von Logik. +5. **Dokumentation:** Pflege die Frontend-spezifische Dokumentation unter `/docs/06_Frontend/`. +``` diff --git a/docs/03_Agents/Playbooks/Gemini.md b/docs/04_Agents/Playbooks/Gemini.md similarity index 100% rename from docs/03_Agents/Playbooks/Gemini.md rename to docs/04_Agents/Playbooks/Gemini.md diff --git a/docs/03_Agents/Playbooks/Junie.md b/docs/04_Agents/Playbooks/Junie.md similarity index 100% rename from docs/03_Agents/Playbooks/Junie.md rename to docs/04_Agents/Playbooks/Junie.md diff --git a/docs/04_Agents/Playbooks/QASpecialist.md b/docs/04_Agents/Playbooks/QASpecialist.md new file mode 100644 index 00000000..b33c2b59 --- /dev/null +++ b/docs/04_Agents/Playbooks/QASpecialist.md @@ -0,0 +1,25 @@ +# Playbook: QA & Testing Specialist + +## Beschreibung +Fokus auf Teststrategie, Testdaten und End-to-End Qualitätssicherung. + +## System Prompt + +```text +Testing Specialist + +Du bist der QA & Testing Specialist für das Projekt und folgst den "Docs-as-Code"-Prinzipien. +Dein Ziel ist eine hohe Testabdeckung und stabile Builds. +Kommuniziere ausschließlich auf Deutsch. + +Tools: +- Backend: JUnit 5, AssertJ, MockK, Testcontainers. +- Frontend: Compose UI Tests (sofern möglich), Unit Tests für ViewModels. +- CI: Gradle Check Tasks. + +Regeln: +1. Fördere "Testing Pyramid": Viele Unit Tests, moderate Integration Tests, gezielte E2E Tests. +2. Stelle sicher, dass Tests deterministisch sind (keine Flakiness). +3. Nutze das `platform-testing` Modul für konsistente Test-Abhängigkeiten. +4. **Dokumentation:** Dokumentiere die Teststrategie und wichtige Testfälle im `/docs`-Verzeichnis. +``` diff --git a/docs/03_Agents/README.md b/docs/04_Agents/README.md similarity index 100% rename from docs/03_Agents/README.md rename to docs/04_Agents/README.md diff --git a/docs/04_Backend/Services/ping-service.md b/docs/05_Backend/Services/ping-service.md similarity index 100% rename from docs/04_Backend/Services/ping-service.md rename to docs/05_Backend/Services/ping-service.md diff --git a/docs/05_Frontend/README.md b/docs/06_Frontend/README.md similarity index 64% rename from docs/05_Frontend/README.md rename to docs/06_Frontend/README.md index b71d0a87..20c2214a 100644 --- a/docs/05_Frontend/README.md +++ b/docs/06_Frontend/README.md @@ -10,6 +10,19 @@ Das Frontend ist eine **Kotlin Multiplatform (KMP)**-Anwendung, die für die fol Die Architektur ist auf **Offline-Fähigkeit** und eine reaktive UI ausgelegt. +## Modul-Struktur + +Das `frontend`-Verzeichnis ist wie folgt strukturiert, um eine klare Trennung der Verantwortlichkeiten zu gewährleisten: + +* `shells/`: Die ausführbaren Anwendungen (Assembler-Module), die die App für eine bestimmte Plattform (Desktop, Web) zusammenbauen. +* `features/`: Vertikale Slices der Anwendung. Jedes Feature-Modul kapselt eine bestimmte Funktionalität (z.B. `auth-feature`, `ping-feature`). Wichtig: Ein Feature-Modul darf niemals von einem anderen Feature-Modul abhängen. +* `core/`: Gemeinsame Basis-Module, die von allen Features genutzt werden. Dazu gehören: + * `design-system/`: Compose-Komponenten, Themes, Farben. + * `domain/`: Fachliche Kernlogik und Datenmodelle des Frontends. + * `local-db/`: SQLDelight-Datenbank-Setup und Queries. + * `navigation/`: Navigations-Logik und Routen-Definitionen. + * `network/`: Ktor-Client und API-Definitionen. + ## Kerntechnologien * **UI:** [Compose Multiplatform](https://www.jetbrains.com/lp/compose-multiplatform/) für eine deklarative, plattformübergreifende UI. @@ -18,12 +31,6 @@ Die Architektur ist auf **Offline-Fähigkeit** und eine reaktive UI ausgelegt. * **Dependency Injection:** [Koin](https://insert-koin.io/) für die lose Kopplung von Komponenten. * **Netzwerk:** [Ktor Client](https://ktor.io/docs/client-introduction.html) für die Kommunikation mit dem Backend. -## Architektur-Prinzipien - -* **Clean Architecture / DDD:** Die Codebasis ist in Schichten unterteilt (UI, Application, Domain, Infrastructure), um eine klare Trennung der Verantwortlichkeiten zu gewährleisten. -* **Async-First Data Layer:** Alle Datenbank- und Netzwerk-Interaktionen sind asynchron (`suspend`-Funktionen), um die UI nicht zu blockieren. -* **Feature-basierte Modularisierung:** Die Anwendung ist in unabhängige "Feature"-Module unterteilt, die jeweils eine bestimmte Funktionalität kapseln. - ## Wichtige Dokumente * **[ADR-0010: SQLDelight für Cross-Platform-Persistenz](../01_Architecture/adr/0010-sqldelight-for-cross-platform-persistence.md):** Beschreibt die Entscheidung für SQLDelight. diff --git a/docs/05_Frontend/offline-first-architecture.md b/docs/06_Frontend/offline-first-architecture.md similarity index 100% rename from docs/05_Frontend/offline-first-architecture.md rename to docs/06_Frontend/offline-first-architecture.md diff --git a/docs/05_Frontend/web-setup.md b/docs/06_Frontend/web-setup.md similarity index 100% rename from docs/05_Frontend/web-setup.md rename to docs/06_Frontend/web-setup.md diff --git a/docs/06_Infrastructure/Reference/ports-and-urls.md b/docs/07_Infrastructure/Reference/ports-and-urls.md similarity index 100% rename from docs/06_Infrastructure/Reference/ports-and-urls.md rename to docs/07_Infrastructure/Reference/ports-and-urls.md diff --git a/docs/06_Infrastructure/runbooks/local-development.md b/docs/07_Infrastructure/runbooks/local-development.md similarity index 100% rename from docs/06_Infrastructure/runbooks/local-development.md rename to docs/07_Infrastructure/runbooks/local-development.md diff --git a/docs/90_Reports/2026-01-02_Analyse_Wiederherstellung-Strukturverbesserung.md b/docs/90_Reports/2026-01-02_Analyse_Wiederherstellung-Strukturverbesserung.md new file mode 100644 index 00000000..397e6e95 --- /dev/null +++ b/docs/90_Reports/2026-01-02_Analyse_Wiederherstellung-Strukturverbesserung.md @@ -0,0 +1,63 @@ +# Analyse und Strategie zur Wiederherstellung und Strukturverbesserung + +**Datum:** 2026-01-02 +**Autor:** Junie +**Kontext:** Dieser Bericht wurde nach einem großen Technologie-Upgrade (Kotlin 2.1.0+, Java 25, Spring Boot 3.5.x) erstellt, als die Infrastruktur und die Build-Prozesse instabil waren. + +--- + +Es ist eine klassische Situation: Nach einem großen Technologie-Upgrade knirscht es oft an den Schnittstellen. Da der `ping-service` als technischer Blueprint dient, ist er der absolut richtige Startpunkt. + +Hier ist der Schlachtplan, um Ordnung zu schaffen und die hexagonale Architektur sauber zu etablieren: + +### 1. Wo beginnen? Bottom-Up vs. Top-Down +Da die Infrastruktur aktuell nicht stabil läuft, wird ein **"Core-First"** Ansatz empfohlen, gefolgt vom **Backend-Durchstich**. + +* **Zuerst: Core & Platform:** Ohne eine stabile Basis (`platform-bom`, `platform-dependencies`, `core-domain`) werden die anderen Module immer wieder Kompilierfehler werfen. +* **Dann: Der technische vertikale Durchstich (`ping-service`):** Sobald die Plattform steht, wird der Weg repariert: `Infrastruktur (Docker) -> Ping-Service -> Gateway`. +* **Zuletzt: Frontend:** Das Frontend (BFF-Gedanke) wird erst dann stabil, wenn die API-Contracts des Backends wieder verlässlich geliefert werden. + +### 2. Ordnung schaffen: Der "Clean Desk" im Projekt +Bevor Code gefixt wird, muss die Build-Umgebung aufgeräumt werden: + +1. **Version Catalog Synchronität:** Die `libs.versions.toml` nutzt bereits Java 25 und Kotlin 2.1.0. Es muss geprüft werden, ob alle Gradle-Plugins (insbesondere das `compose-multiplatform` und `spring-boot` Plugin) mit Kotlin 2.1.0 kompatibel sind. +2. **Modul-Konsolidierung (DDD):** Die "Modul-Explosion" sollte reduziert werden. + * **Vorschlag:** Statt 5 Module pro Domain (`api`, `common`, `domain`, `infrastructure`, `service`), auf maximal zwei reduzieren: + * `domain-api`: Nur DTOs und Interfaces (für KMP-Sharing mit dem Frontend). + * `domain-service`: Die gesamte Implementierung (Hexagonal strukturiert in Packages). + +### 3. Hexagonale Architektur im `ping-service` umsetzen +Der `ping-service` ist aktuell noch sehr "Spring-lastig". Für eine echte hexagonale Vorlage sollte das Modul `ping-service` intern wie folgt umstrukturiert werden: + +```text +at.mocode.ping.service +├── adapter +│ ├── in +│ │ └── web (PingController - Dein primärer Port-Adapter) +│ └── out +│ └── persistence (PingRepositoryAdapter - Sekundärer Port-Adapter) +├── application +│ ├── port +│ │ ├── in (PingUseCase - Das Interface für den Controller) +│ │ └── out (PingOutputPort - Interface für die Datenbank) +│ └── service (PingService - Hier liegt die Business Logik, OHNE Spring-Annotationen wo möglich) +└── domain + └── model (PingEntity/Value Objects) +``` + +### 4. Konkrete Schritte zur Reparatur + +**Schritt 1: Infrastruktur-Check (Docker)** +* Check `docker-compose.yaml`: Laufen Postgres und Keycloak? +* `ping-service` application.yaml: Die Datenbank-Verbindung (JPA) aktivieren. + +**Schritt 2: Backend API-Gateway Fix** +* Die Security-Konfiguration (`SecurityConfig.kt`) wegen Bibliotheks-Änderungen in Spring Security 7/Spring Boot 3.5 prüfen. + +**Schritt 3: Frontend (BFF) Anpassung** +* Der `PingApiClient` im Frontend sollte gegen das **Gateway** (BFF-Pattern) laufen, nicht direkt gegen den Service. + +### Empfehlung zur Vorgehensweise (Prioritäten): +1. **Gradle-Build stabilisieren:** Alle `:platform:*` und `:core:*` Module müssen mit `./gradlew build` fehlerfrei durchlaufen. +2. **Ping-SCS fertigstellen:** Eine minimale Datenbank-Speicherung im `ping-service` implementieren. +3. **Gateway-Security:** Sicherstellen, dass das JWT von Keycloak korrekt zum `ping-service` durchgereicht wird. diff --git a/docs/90_Reports/2026-01-14_Domain_Structure_Plan.md b/docs/90_Reports/2026-01-14_Domain_Structure_Plan.md new file mode 100644 index 00000000..0b51353c --- /dev/null +++ b/docs/90_Reports/2026-01-14_Domain_Structure_Plan.md @@ -0,0 +1,46 @@ +# Plan zur Strukturierung der Domänen-Dokumentation + +* **Datum:** 2026-01-14 +* **Autor:** Documentation & Knowledge Curator +* **Status:** Entwurf + +## Ausgangslage + +Das Verzeichnis `docs/02_Domain` enthält wertvolle, aber zunehmend unübersichtliche Informationen. +Es gibt eine Mischung aus: +* Destilliertem Wissen (`01_Core_Entities.md`) +* Referenz-Material (`Reference/FEI...`, `Reference/OETO...`) +* Entwicklungs-Infos (`Development/`) +* Implizitem Wissen (`Reference/Geschichten`) + +## Zielbild + +Gemäß **ADR-0012** (Proposed) soll eine strikte Trennung nach Reifegrad eingeführt werden. + +## Migrations-Schritte + +1. **Verzeichnisse erstellen:** + * `docs/02_Domain/01_Core_Model/Entities` + * `docs/02_Domain/01_Core_Model/Processes` + * `docs/02_Domain/01_Core_Model/Rules` + * `docs/02_Domain/03_Analysis/Scenarios` + +2. **Dateien verschieben & umbenennen:** + * `01_Core_Entities.md` -> `01_Core_Model/Entities/Overview.md` (oder aufsplitten) + * `Reference/Geschichten` -> `03_Analysis/Scenarios` + * `Reference/FEI_01-2026` -> `02_Reference/FEI_Regelwerk` + * `Reference/OETO_01-2026` -> `02_Reference/OETO_Regelwerk` + +3. **Development-Ordner auflösen:** + * Die Inhalte von `docs/02_Domain/Development` (`kdoc-style.md`, `start-local.md`, `branchschutz...`) gehören **nicht** in die Domäne. + * `start-local.md` -> `docs/02_Onboarding/` + * `branchschutz...` -> `docs/02_Onboarding/` + * `kdoc-style.md` -> `docs/02_Onboarding/CodingGuidelines/` + +4. **Glossar anlegen:** + * Erstellung von `docs/02_Domain/00_Glossary.md` als leere Hülle für den Start. + +## Nächste Schritte für den User + +* Bestätigung des ADR-0012. +* Freigabe zur Durchführung der Datei-Operationen (Verschieben/Umbenennen). diff --git a/docs/90_Reports/2026-01-14_Project_Analysis.md b/docs/90_Reports/2026-01-14_Project_Analysis.md new file mode 100644 index 00000000..9471e117 --- /dev/null +++ b/docs/90_Reports/2026-01-14_Project_Analysis.md @@ -0,0 +1,53 @@ +# Projektanalyse Bericht: Meldestelle + +* **Datum:** 2026-01-14 +* **Autor:** Documentation & Knowledge Curator +* **Status:** Final + +## 1. Einleitung + +Dieser Bericht fasst die Ergebnisse einer vertieften Analyse des Projekts "Meldestelle" zusammen. Ziel war es, den aktuellen Stand der Architektur, der Infrastruktur und der Dokumentationspraxis zu bewerten. Die Analyse basiert auf dem aktuellen Dateisystemstand und den vorhandenen Dokumentationen. + +## 2. Architektur & Technologie-Stack + +Das Projekt präsentiert sich als modernes, verteiltes System mit einem hohen Anspruch an technologische Aktualität. + +* **Backend:** + * **Architektur:** Microservices-Ansatz mit Spring Boot 3.5.9 und Java 25/Kotlin 2.3.0. + * **Struktur:** Klare Modulith-Struktur innerhalb der Services (`api`, `domain`, `infrastructure`, `service`), was Domain-Driven Design (DDD) fördert. + * **Kommunikation:** Event-Driven Ansätze (Redis/Kafka angedeutet) und REST via Spring Cloud Gateway. + * **Service Discovery:** HashiCorp Consul wird konsequent genutzt. + +* **Frontend:** + * **Technologie:** Kotlin Multiplatform (KMP) mit Compose Multiplatform 1.10.x. + * **Plattformen:** Desktop (JVM) und Web (Wasm/JS). + * **Offline-First:** Starke Betonung auf Offline-Fähigkeit mit SQLDelight und Sync-Strategien. + +* **Build-System:** + * Gradle 9.x mit Version Catalogs (`libs.versions.toml`) ist vorbildlich umgesetzt. Die Nutzung von Bundles reduziert Boilerplate in den Modulen. + +## 3. Infrastruktur & Betrieb + +Die Infrastruktur-Definition via Docker Compose ist umfassend und produktionsnah für eine lokale Umgebung. + +* **Komponenten:** PostgreSQL, Redis, Keycloak, Consul, Prometheus, Grafana, Zipkin. +* **Konfiguration:** Detaillierte Healthchecks, Netzwerk-Aliase und Profil-Nutzung (`infra`, `backend`, `gui`). +* **Herausforderungen:** Die Komplexität der Orchestrierung zeigt sich in den jüngsten Journal-Einträgen (Startprobleme, Race Conditions beim Build). + +## 4. Dokumentation (Docs-as-Code) + +Die Dokumentationsstrategie ist exzellent definiert und wird sichtbar gelebt. + +* **Struktur:** `docs/` als Single Source of Truth ist klar erkennbar. +* **ADRs:** Vorhandene Architecture Decision Records (z.B. `ADR-001 Koin`, `ADR-002 SQLDelight`) belegen bewusste Entscheidungen. +* **Rollen:** Die Definition von KI-Personas (Agents) im `docs/03_Agents/` Bereich ist innovativ und sorgt für konsistente Arbeitsweisen. +* **Journal:** Die Nutzung des Journals (`docs/99_Journal/`) zur Fehlersuche und Statusverfolgung ist vorbildlich. + +## 5. Aktuelle Beobachtungen & Risiken + +* **Gateway-Konfiguration:** Es gibt ein offenes Problem mit dem `CircuitBreaker` im API-Gateway (siehe Journal vom 13.01.2026). Dies deutet auf eine fehlende Runtime-Dependency oder Fehlkonfiguration hin. +* **Komplexität:** Der Tech-Stack ist sehr "bleeding edge" (Java 25, Kotlin 2.3, Spring Boot 3.5.9). Dies birgt das Risiko von Inkompatibilitäten und Tooling-Problemen (wie bereits bei den Gradle-Locks beobachtet). + +## 6. Fazit + +Das Projekt "Meldestelle" ist architektonisch sehr reif und modern. Die strikte Trennung von Belangen und die konsequente Anwendung von DDD und Docs-as-Code sind hervorzuheben. Der Fokus sollte kurzfristig auf der Stabilisierung der lokalen Docker-Umgebung liegen, um die Developer Experience (DX) sicherzustellen. diff --git a/docs/99_Journal/2026-01-14_Konsolidierung_Dokumentationsstruktur.md b/docs/99_Journal/2026-01-14_Konsolidierung_Dokumentationsstruktur.md new file mode 100644 index 00000000..4df39088 --- /dev/null +++ b/docs/99_Journal/2026-01-14_Konsolidierung_Dokumentationsstruktur.md @@ -0,0 +1,39 @@ +# Journal: Umfassende Konsolidierung der Dokumentationsstruktur + +* **Datum:** 2026-01-14 +* **Autor:** Documentation & Knowledge Curator +* **Thema:** Eine tiefgreifende Restrukturierung und Bereinigung der gesamten Projektdokumentation, um die "Single Source of Truth"-Regel konsequent durchzusetzen. + +## Zusammenfassung + +In dieser Session wurde eine Reihe von Inkonsistenzen und Redundanzen in der Projektdokumentation identifiziert und systematisch beseitigt. Ziel war es, eine klare, wartbare und leicht navigierbare Struktur zu schaffen, die dem "Docs-as-Code"-Prinzip vollständig entspricht. + +## Durchgeführte Maßnahmen + +1. **Strukturierung der Domänen-Dokumentation (`docs/03_Domain`):** + * Gemäß **[ADR-0012](../01_Architecture/adr/0012-domain-documentation-structure.md)** wurde eine neue, nach Reifegrad getrennte Ordnerstruktur eingeführt (`00_Glossary`, `01_Core_Model`, `02_Reference`, `03_Analysis`). + * Bestehende Dokumente (Regelwerke, Kern-Entitäten, "Geschichten") wurden in diese neue Struktur migriert. + * Technische Anleitungen wurden aus dem Domänen-Ordner in den `02_Onboarding`-Bereich verschoben. + +2. **Behebung der Nummerierungs-Inkonsistenz im `docs`-Verzeichnis:** + * Die doppelte Verwendung der Nummer `02_` wurde behoben, indem die Verzeichnisse linear von `01` bis `07` umbenannt wurden. + * Die zentrale `docs/README.md` wurde entsprechend aktualisiert, um die neue, logische Reihenfolge widerzuspiegeln. + +3. **Zentralisierung der Agenten-Playbooks:** + * Die System-Prompts der KI-Agenten wurden aus der `AGENTS.md` extrahiert und in dedizierte Playbook-Dateien unter `docs/04_Agents/Playbooks/` verschoben. + * Die `AGENTS.md` dient nun als reine Übersichts- und Einstiegsseite mit Links zu den Playbooks. + * Die `.gemini/README.md` wurde korrigiert und vereinfacht. + +4. **Standardisierung der Modul-READMEs:** + * Die `README.md`-Dateien in allen Haupt-Modulen (`platform`, `frontend`, `backend`, `core`, `contracts`) wurden vereinheitlicht. + * Sie dienen nun ausschließlich als **Wegweiser** zur zentralen Dokumentation im `docs`-Verzeichnis und enthalten keine redundanten Informationen mehr. + +5. **Bereinigung der Root-`README.md`:** + * Die `README.md` im Projekt-Root wurde radikal gekürzt. Sie dient jetzt als minimalistische "Visitenkarte" mit den wichtigsten Links zur Dokumentation und zum Quick-Start. + +6. **Archivierung veralteter Berichte:** + * Alte Berichte aus den Verzeichnissen `JunieBerichte` und `GeminiBerichte` wurden analysiert und als Referenz- oder Analyse-Dokumente in das `docs`-Verzeichnis (`90_Reports` oder `02_Reference`) überführt. + +## Ergebnis + +Das Projekt verfügt nun über eine hochgradig konsistente, redundanzfreie und wartbare Dokumentationsstruktur. Die Gefahr von "Dokumentations-Drift" wurde signifikant reduziert. diff --git a/docs/99_Journal/2026-01-14_TODO_Final-Doc-Cleanup.md b/docs/99_Journal/2026-01-14_TODO_Final-Doc-Cleanup.md new file mode 100644 index 00000000..56d946df --- /dev/null +++ b/docs/99_Journal/2026-01-14_TODO_Final-Doc-Cleanup.md @@ -0,0 +1,39 @@ +# TODO-Liste: Finale Bereinigung der Dokumentation + +* **Datum:** 2026-01-14 +* **Autor:** Documentation & Knowledge Curator +* **Status:** Offen + +## Kontext + +Nach der großen Dokumentations-Restrukturierung sind beim Commit-Prozess Linting-Fehler und Link-Warnungen aufgetaucht. Diese Liste dient als Plan, um diese letzten Probleme in der nächsten Session zu beheben. + +--- + +## Offene Punkte + +### 1. "Broken Links" in Tech-Stack-Referenzen beheben + +* **Problem:** Die aus dem Web kopierten Dokumente (`Gradle_Kotlin_DSL_Primer.md`, `Kotlin_2-3-0_ReleaseNotes.md`) in `docs/02_Reference/Tech_Stack/` enthalten hunderte ungültige, relative Links, die von den Original-Webseiten stammen. +* **Aktion:** + * Öffne beide Dateien. + * Entferne die kompletten Navigations-Sidebars und alle anderen internen Links, die Fehler verursachen. + * Reduziere die Dateien auf ihren reinen Inhalts-Kern. Der Link zur Original-Quelle am Anfang jeder Datei ist ausreichend. + +### 2. Ungültiges HTML in Legacy-Spezifikation korrigieren + +* **Problem:** Die Datei `docs/03_Domain/02_Reference/Legacy_Specs/OETO-2026_Meldestelle_Erweiterung-Schnittstelle_2014.md` enthält ungültige XML/HTML-Tags. +* **Aktion:** + * Öffne die Datei. + * Formatiere den Inhalt als Markdown-Code-Block mit dem Typ `xml`, um die Struktur zu erhalten, ohne dass der Parser Fehler meldet. + +### 3. Fehlende `README.md`-Dateien im `docs`-Verzeichnis erstellen + +* **Problem:** Die Wegweiser-READMEs in den Modulen `backend`, `core` und `contracts` zeigen auf nicht-existente Zieldateien. +* **Aktion:** Erstelle die folgenden Platzhalter-Dateien, um die Links gültig zu machen: + * `docs/05_Backend/README.md` (mit einem kurzen Platzhaltertext) + * `docs/03_Domain/01_Core_Model/README.md` (mit einem kurzen Platzhaltertext) + +--- + +Nach Abarbeitung dieser Liste sollte das Projekt frei von Dokumentations-Warnungen sein. diff --git a/docs/README.md b/docs/README.md index b99c4095..f7eb12e9 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,10 +8,11 @@ Die Dokumentation wird nach dem **"Docs-as-Code"**-Prinzip gepflegt: Sie liegt n * **/01_Architecture**: Architektur (ADRs, C4/Diagramme, Architektur-Referenzen). * **/02_Onboarding**: Einstieg & Entwickler-Workflow (lokales Setup, PR-Workflow, Style-Guides). -* **/03_Agents**: Agent Operating Model (AOM) + Playbooks für Junie/Gemini und weitere KI-Unterstützungen. -* **/04_Backend**: Backend-spezifische Dokumentation (Services, Datenmodelle, Integrationen). -* **/05_Frontend**: Frontend-spezifische Dokumentation (KMP/Compose, Offline/Synchronisierung). -* **/06_Infrastructure**: Betrieb & Infrastruktur (Docker, Keycloak, Observability, Ports/URLs, Runbooks). +* **/03_Domain**: Fachliche Domäne (Kern-Modell, Referenzen, Analyse). +* **/04_Agents**: Agent Operating Model (AOM) + Playbooks für KI-Unterstützung. +* **/05_Backend**: Backend-spezifische Dokumentation (Services, Datenmodelle, Integrationen). +* **/06_Frontend**: Frontend-spezifische Dokumentation (KMP/Compose, Offline/Synchronisierung). +* **/07_Infrastructure**: Betrieb & Infrastruktur (Docker, Keycloak, Observability, Runbooks). * **/90_Reports**: Berichte/Analysen/Status-Reports (zeitlich geordnet, nicht zwingend „verbindliche Regeln“). * **/99_Journal**: Kurzprotokolle pro Session (Anti-Wissensverlust, Nachvollziehbarkeit). @@ -27,9 +28,10 @@ Jeder Entwickler und jeder KI-Agent ist dafür verantwortlich, die Dokumentation ### Wichtigste Einstiege -* Agenten/Arbeitsmodus: `docs/03_Agents/` * Lokales Setup/Workflow: `docs/02_Onboarding/` +* Fachliches Modell: `docs/03_Domain/` +* Agenten/Arbeitsmodus: `docs/04_Agents/` * Architekturentscheidungen: `docs/01_Architecture/adr/` -* Backend (pro Service): `docs/04_Backend/Services/` -* Ping-Service (Startpunkt): `docs/04_Backend/Services/ping-service.md` +* Backend (pro Service): `docs/05_Backend/Services/` +* Ping-Service (Startpunkt): `docs/05_Backend/Services/ping-service.md` * Ping-Service Implementierungs-Report (Historie): `docs/90_Reports/Ping-Service_Impl_01-2026.md` diff --git a/frontend/README.md b/frontend/README.md index 3f12a19d..5d946f1a 100644 --- a/frontend/README.md +++ b/frontend/README.md @@ -1,7 +1,6 @@ -# Frontend +# Frontend Module -Kotlin Multiplatform Frontend layer. +Dieses Modul enthält den gesamten Code für das Kotlin Multiplatform (KMP) Frontend "Meldestelle Portal". -- shells: ausführbare Anwendungen (Assembler) -- features: Vertical Slices (kein Feature→Feature Import) -- core: gemeinsame Basis (Design-System, Network, Local-DB, Auth, Domain) +**Die vollständige Dokumentation befindet sich hier:** +[**-> docs/06_Frontend/README.md**](../docs/06_Frontend/README.md) diff --git a/platform/README.md b/platform/README.md new file mode 100644 index 00000000..00a96ba4 --- /dev/null +++ b/platform/README.md @@ -0,0 +1,6 @@ +# Platform Module + +Dieses Modul ist für die zentrale Verwaltung von Abhängigkeiten und Build-Infrastruktur zuständig. + +**Die vollständige Dokumentation befindet sich hier:** +[**-> docs/01_Architecture/03_Build_System_Platform_Module.md**](../docs/01_Architecture/03_Build_System_Platform_Module.md)