|
Some checks failed
Desktop CI — Headless Tests & Build / Compose Desktop — Tests (headless) & Build (push) Has been cancelled
|
||
|---|---|---|
| _backup | ||
| .gemini | ||
| .gitea/workflows | ||
| .junie | ||
| backend | ||
| config | ||
| contracts | ||
| core | ||
| docs | ||
| frontend | ||
| gradle | ||
| kotlin-js-store | ||
| META-INF | ||
| platform | ||
| .dockerignore | ||
| .editorconfig | ||
| .env.example | ||
| .gitignore | ||
| AGENTS.md | ||
| build.gradle.kts | ||
| CHANGELOG.md | ||
| dc-backend.yaml | ||
| dc-gui.yaml | ||
| dc-infra.yaml | ||
| dc-ops.yaml | ||
| docker-compose.yaml | ||
| gradle.properties | ||
| gradlew | ||
| gradlew.bat | ||
| LICENSE | ||
| README.md | ||
| settings.gradle.kts | ||
| version.properties | ||
Meldestelle
Desktop‑First Meldestelle: Offline‑fähige Compose‑Desktop‑App mit optionalem Backend‑Stack. Domänengetrieben (DDD), Kotlin Multiplatform.
📚 Dokumentation — Single Source of Truth
Die gesamte Projektdokumentation (Architektur, Fachdomäne, Entwickler-Anleitungen) befindet sich im /docs-Verzeichnis.
Starte hier: → docs/README.md
| Bereich | Inhalt |
|---|---|
| 01_Architecture | Master Roadmap, ADRs, C4‑Modelle, Desktop‑Konzept |
| 02_Guides | Setup-Anleitungen, Entwickler-Guidelines |
| 03_Domain | Fachlichkeit, Turnierregeln, Entities |
| 07_Infrastructure | Docker, Keycloak, CI/CD, Zora-Infrastruktur |
Wesentliche Architektur-Referenz: Offline‑First Desktop & Backend (Kurzkonzept)
🖥️ Primärer Fokus: Desktop‑App
- Compose Multiplatform (JVM Desktop) als primäre Zielplattform
- Offline‑First: Lokale SQLDelight‑DB, Synchronisation optional
- Multi‑Tenant‑Backend optional für Sync/Verwaltung (Schema‑per‑Tenant, vgl. ADR‑0021)
🏗️ Tech Stack (aktueller Stand)
| Schicht | Technologie |
|---|---|
| Frontend (primär) | Kotlin Multiplatform (KMP), Compose Multiplatform |
| Backend | Kotlin (Ktor/Spring Boot), Spring Cloud Gateway |
| Datenbank | SQLDelight (lokal), PostgreSQL (Backend) |
| Auth | Keycloak (OAuth2 / OIDC) |
| Cache | Valkey |
| Service Discovery | Consul |
| Tracing | Zipkin |
| CI/CD | Gitea Actions + Gitea Registry |
| Infrastruktur | Proxmox VE, Docker Compose, Pangolin Tunnel |
🚀 Quick Start (lokale Entwicklung)
Empfohlen: Starte die Desktop‑App direkt aus dem Repo. Der Backend‑Stack ist optional und wird nur für Sync/Integration benötigt.
A) Desktop‑App starten (ohne Backend)
Voraussetzungen: JDK 21+, aktuelle Gradle Wrapper verwendet.
# Desktop‑Shell ausführen (Compose Desktop)
./gradlew :frontend:shells:meldestelle-desktop:run
Hinweise:
- Beim ersten Start wird die lokale Datenbank initialisiert (Offline‑First).
- Architektur-Referenz:
docs/06_Frontend/MVVM_UDF_Pattern.md(UDF/MVVM für ViewModels)
B) Optional: Backend‑Stack per Docker starten
# 1. Umgebungsvariablen (nur beim ersten Mal)
cp .env.example .env || true
# 2. Infrastruktur (Postgres, Keycloak, Valkey, Consul, Zipkin)
docker compose -f docker-compose.yaml -f dc-infra.yaml up -d
# 3. Backend‑Services (Gateway, Masterdata, Ping, …)
docker compose -f docker-compose.yaml -f dc-backend.yaml up -d
# 4. Ops‑Stack (Prometheus, Grafana)
docker compose -f docker-compose.yaml -f dc-ops.yaml up -d
# 5. Optional: Web‑Shell
docker compose -f docker-compose.yaml -f dc-gui.yaml up -d
⚠️ Reihenfolge beachten: Infra muss
healthysein, bevor Backend gestartet wird. Keycloak benötigt ~60–90 Sekunden.
🧭 Legacy (V1) Hinweise
- Ältere V1‑Abschnitte/Anleitungen (Web‑First/Microservices‑Only) gelten als DEPRECATED.
- Verwende für lokale Entwicklung primär die Desktop‑App (siehe Quick Start). Docker‑Stacks sind optional für Integration/Sync.
- In der Doku sind V1‑Seiten entsprechend markiert oder werden sukzessive bereinigt (siehe Roadmaps Sprint C‑4).
Wichtige lokale Ports
| Service | URL |
|---|---|
| API-Gateway | http://localhost:8081 |
| Keycloak Admin | http://localhost:8180 |
| Consul UI | http://localhost:8500 |
| Grafana | http://localhost:3000 |
| Zipkin | http://localhost:9411 |
🤝 Beitragen
Beiträge sind willkommen. Bitte lies zunächst die Entwickler-Guides unter docs/02_Guides.
📜 Lizenz
Dieses Projekt steht unter der MIT License.