Go to file
stefan a256622f37 refactor: Migrate from monolithic to modular architecture
- Restructure project into domain-specific modules (core, masterdata, members, horses, events, infrastructure)
- Create shared client components in common-ui module
- Implement CI/CD workflows with GitHub Actions
- Consolidate documentation in docs directory
- Remove deprecated modules and documentation files
- Add cleanup and migration scripts for transition
- Update README with new project structure and setup instructions
2025-07-22 18:44:18 +02:00
.fleet Project initialized 2025-04-17 13:06:25 +02:00
.github/workflows refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
client refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
config (vision) SCS/DDD 2025-07-21 23:54:13 +02:00
core refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
docker refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
docs refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
events refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
gradle (vision) SCS/DDD 2025-07-21 23:54:13 +02:00
horses refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
infrastructure refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
kotlin-js-store (fix) Umbau zu SCS 2025-07-19 11:26:09 +02:00
masterdata refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
members refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
platform refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
.editorconfig fix(compose): Change server host port mapping to 8081 to avoid local conflict 2025-04-20 16:19:17 +02:00
.gitignore fix(server): Read database config directly from environment variables 2025-04-18 22:01:20 +02:00
build.gradle.kts refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
cleanup_old_modules.sh refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
commit_message.txt refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
docker-compose.yml refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
Dockerfile (vision) SCS/DDD 2025-07-21 23:54:13 +02:00
gradle.properties (vision) SCS/DDD 2025-07-21 23:54:13 +02:00
gradlew (fix) cleanup Gradle-Build 2025-06-30 11:18:53 +02:00
gradlew.bat (fix) cleanup Gradle-Build 2025-06-30 11:18:53 +02:00
LICENSE Create LICENSE 2025-04-17 13:19:13 +02:00
README.md refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
settings.gradle.kts refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00
update_imports.sh refactor: Migrate from monolithic to modular architecture 2025-07-22 18:44:18 +02:00

Meldestelle

Überblick

Meldestelle ist ein modulares System zur Verwaltung von Pferdesportveranstaltungen. Das System ermöglicht die Registrierung von Pferden, Mitgliedern und Veranstaltungen sowie die Verwaltung von Stammdaten.

Das Projekt wurde kürzlich auf eine modulare Architektur migriert, um die Wartbarkeit und Erweiterbarkeit zu verbessern.

Systemanforderungen

  • Java 21
  • Kotlin 2.1.20
  • Gradle 8.14
  • Docker und Docker Compose

Infrastruktur

Das System nutzt folgende Dienste:

  • PostgreSQL 16: Primäre Datenbank
  • Redis 7: Caching
  • Keycloak 23.0: Authentifizierung und Autorisierung
  • Kafka 7.5.0: Messaging und Event-Streaming
  • Zipkin: Distributed Tracing
  • Prometheus & Grafana: Monitoring (optional)

Projektstruktur

Das Projekt ist in folgende Hauptmodule unterteilt:

  • core: Gemeinsame Kernkomponenten

    • core-domain: Domänenmodelle und Geschäftslogik
    • core-utils: Allgemeine Hilfsfunktionen
  • masterdata: Verwaltung von Stammdaten

    • masterdata-api: API-Definitionen
    • masterdata-application: Anwendungslogik
    • masterdata-domain: Domänenmodelle
    • masterdata-infrastructure: Infrastrukturkomponenten
    • masterdata-service: Service-Implementierung
  • members: Mitgliederverwaltung

    • members-api: API-Definitionen
    • members-application: Anwendungslogik
    • members-domain: Domänenmodelle
    • members-infrastructure: Infrastrukturkomponenten
    • members-service: Service-Implementierung
  • horses: Pferderegistrierung

    • horses-api: API-Definitionen
    • horses-application: Anwendungslogik
    • horses-domain: Domänenmodelle
    • horses-infrastructure: Infrastrukturkomponenten
    • horses-service: Service-Implementierung
  • events: Veranstaltungsverwaltung

    • events-api: API-Definitionen
    • events-application: Anwendungslogik
    • events-domain: Domänenmodelle
    • events-infrastructure: Infrastrukturkomponenten
    • events-service: Service-Implementierung
  • infrastructure: Gemeinsame Infrastrukturkomponenten

    • auth: Authentifizierung
    • cache: Caching
    • event-store: Event-Speicher
    • gateway: API-Gateway
    • messaging: Messaging-Infrastruktur
    • monitoring: Monitoring-Komponenten
  • client: Client-Anwendungen

    • common-ui: Gemeinsame UI-Komponenten
    • desktop-app: Desktop-Anwendung
    • web-app: Web-Anwendung

Installation und Setup

Voraussetzungen

Stellen Sie sicher, dass Java 21, Docker und Docker Compose installiert sind.

Infrastruktur starten

docker-compose up -d

Dies startet alle erforderlichen Dienste wie PostgreSQL, Redis, Keycloak, Kafka, Zipkin und optional Prometheus und Grafana.

Projekt bauen

./gradlew build

Dienste starten

# Gateway starten
./gradlew :infrastructure:gateway:bootRun

# Masterdata-Service starten
./gradlew :masterdata:masterdata-service:bootRun

# Members-Service starten
./gradlew :members:members-service:bootRun

# Horses-Service starten
./gradlew :horses:horses-service:bootRun

# Events-Service starten
./gradlew :events:events-service:bootRun

Client-Anwendungen starten

# Desktop-Anwendung starten
./gradlew :client:desktop-app:run

# Web-Anwendung bauen
./gradlew :client:web-app:build

Entwicklung

Aktuelle Migrationshinweise

Das Projekt wurde kürzlich von einer monolithischen Struktur zu einer modularen Architektur migriert. Die Migration umfasste:

  • Umzug von :shared-kernel zu core-Modulen
  • Umzug von :master-data zu masterdata-Modulen
  • Umzug von :member-management zu members-Modulen
  • Umzug von :horse-registry zu horses-Modulen
  • Umzug von :event-management zu events-Modulen
  • Umzug von :api-gateway zu infrastructure/gateway
  • Umzug von :composeApp zu client-Modulen

Es gibt noch einige offene Probleme, insbesondere bei den Client-Modulen, die Kotlin Multiplatform und Compose Multiplatform verwenden.

Entwicklungsrichtlinien

  • Verwenden Sie die in der Projektstruktur definierten Module
  • Folgen Sie den Architekturentscheidungen (ADRs) im Verzeichnis docs/architecture/adr
  • Verwenden Sie die Datenmodelle aus docs/architecture/data-model

Tests ausführen

./gradlew test

Dokumentation

Weitere Dokumentation finden Sie im docs-Verzeichnis:

  • API-Dokumentation: docs/api
  • Architektur: docs/architecture
  • Entwicklungsrichtlinien: docs/development
  • Diagramme: docs/diagrams
  • Betriebsanleitung: docs/operations
  • Postman-Sammlungen: docs/postman

Lizenz

Siehe LICENSE Datei.

Stand

Letzte Aktualisierung: 22. Juli 2025