382 lines
9.5 KiB
TOML
382 lines
9.5 KiB
TOML
# ===================================================================
|
|
# Central Configuration - Single Source of Truth
|
|
# Master file for all project configuration values
|
|
# ===================================================================
|
|
# Version: 1.0.0
|
|
# Last updated: 2025-09-15
|
|
# Author: Meldestelle Development Team
|
|
#
|
|
# This file serves as the SINGLE SOURCE OF TRUTH for all configuration
|
|
# values in the Meldestelle project, eliminating redundancy across
|
|
# 38+ files and ensuring consistency.
|
|
|
|
[metadata]
|
|
project-name = "Meldestelle"
|
|
version = "1.0.0"
|
|
description = "Pferdesport Meldestelle System"
|
|
author = "Österreichischer Pferdesportverband"
|
|
license = "Proprietary"
|
|
|
|
# ===================================================================
|
|
# PORT MANAGEMENT - Single Source of Truth
|
|
# Eliminates 38+ redundant port definitions
|
|
# ===================================================================
|
|
|
|
[ports]
|
|
# --- Infrastructure Services ---
|
|
api-gateway = 8081
|
|
auth-server = 8087
|
|
monitoring-server = 8088
|
|
|
|
# --- Application Services ---
|
|
ping-service = 8082
|
|
members-service = 8083
|
|
horses-service = 8084
|
|
events-service = 8085
|
|
masterdata-service = 8086
|
|
|
|
# --- External Infrastructure ---
|
|
postgres = 5432
|
|
redis = 6379
|
|
keycloak = 8180
|
|
consul = 8500
|
|
zookeeper = 2181
|
|
kafka = 9092
|
|
|
|
# --- Monitoring Stack ---
|
|
prometheus = 9090
|
|
grafana = 3000
|
|
alertmanager = 9093
|
|
|
|
# --- Client Applications ---
|
|
web-app = 4000
|
|
desktop-app-vnc = 5901
|
|
desktop-app-novnc = 6080
|
|
|
|
# --- Debug Ports (Development) ---
|
|
gateway-debug = 5005
|
|
ping-debug = 5005
|
|
members-debug = 5004
|
|
horses-debug = 5005
|
|
events-debug = 5006
|
|
masterdata-debug = 5007
|
|
auth-debug = 5005
|
|
|
|
[port-ranges]
|
|
# --- Port Range Definitions ---
|
|
infrastructure = "8081-8089"
|
|
services = "8082-8099"
|
|
monitoring = "9090-9099"
|
|
clients = "4000-4099"
|
|
debug = "5005-5009"
|
|
vnc = "5901-5999"
|
|
|
|
# ===================================================================
|
|
# SPRING PROFILE MANAGEMENT - Single Source of Truth
|
|
# Eliminates 72+ redundant SPRING_PROFILES_ACTIVE definitions
|
|
# ===================================================================
|
|
|
|
[spring-profiles]
|
|
# --- Standard Profile Names ---
|
|
default = "default"
|
|
development = "dev"
|
|
docker = "docker"
|
|
production = "prod"
|
|
test = "test"
|
|
|
|
# --- Category-Specific Default Profiles ---
|
|
[spring-profiles.defaults]
|
|
infrastructure = "default"
|
|
services = "docker"
|
|
clients = "dev"
|
|
|
|
# --- Environment Mapping ---
|
|
[spring-profiles.environment-mapping]
|
|
development = "dev"
|
|
staging = "prod"
|
|
production = "prod"
|
|
testing = "test"
|
|
local = "dev"
|
|
|
|
# ===================================================================
|
|
# SERVICE DISCOVERY - Single Source of Truth
|
|
# Standardizes service URLs and hostnames
|
|
# ===================================================================
|
|
|
|
[services]
|
|
[services.ping-service]
|
|
name = "ping-service"
|
|
port = 8082
|
|
internal-host = "ping-service"
|
|
external-host = "localhost"
|
|
internal-url = "http://ping-service:8082"
|
|
external-url = "http://localhost:8082"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
swagger-endpoint = "/swagger-ui.html"
|
|
|
|
[services.members-service]
|
|
name = "members-service"
|
|
port = 8083
|
|
internal-host = "members-service"
|
|
external-host = "localhost"
|
|
internal-url = "http://members-service:8083"
|
|
external-url = "http://localhost:8083"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
|
|
[services.horses-service]
|
|
name = "horses-service"
|
|
port = 8084
|
|
internal-host = "horses-service"
|
|
external-host = "localhost"
|
|
internal-url = "http://horses-service:8084"
|
|
external-url = "http://localhost:8084"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
|
|
[services.events-service]
|
|
name = "events-service"
|
|
port = 8085
|
|
internal-host = "events-service"
|
|
external-host = "localhost"
|
|
internal-url = "http://events-service:8085"
|
|
external-url = "http://localhost:8085"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
|
|
[services.masterdata-service]
|
|
name = "masterdata-service"
|
|
port = 8086
|
|
internal-host = "masterdata-service"
|
|
external-host = "localhost"
|
|
internal-url = "http://masterdata-service:8086"
|
|
external-url = "http://localhost:8086"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
|
|
[services.api-gateway]
|
|
name = "api-gateway"
|
|
port = 8081
|
|
internal-host = "api-gateway"
|
|
external-host = "localhost"
|
|
internal-url = "http://api-gateway:8081"
|
|
external-url = "http://localhost:8081"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
gateway-endpoint = "/actuator/gateway"
|
|
|
|
[services.auth-server]
|
|
name = "auth-server"
|
|
port = 8087
|
|
internal-host = "auth-server"
|
|
external-host = "localhost"
|
|
internal-url = "http://auth-server:8087"
|
|
external-url = "http://localhost:8087"
|
|
health-endpoint = "/actuator/health/readiness"
|
|
metrics-endpoint = "/actuator/prometheus"
|
|
info-endpoint = "/actuator/info"
|
|
|
|
# ===================================================================
|
|
# INFRASTRUCTURE SERVICES
|
|
# ===================================================================
|
|
|
|
[infrastructure]
|
|
[infrastructure.postgres]
|
|
host = "postgres"
|
|
port = 5432
|
|
database = "meldestelle"
|
|
user = "meldestelle"
|
|
external-port = 5432
|
|
health-check = "pg_isready -U meldestelle -d meldestelle"
|
|
|
|
[infrastructure.redis]
|
|
host = "redis"
|
|
port = 6379
|
|
external-port = 6379
|
|
health-check = "redis-cli ping"
|
|
|
|
[infrastructure.consul]
|
|
host = "consul"
|
|
port = 8500
|
|
external-port = 8500
|
|
health-check = "/v1/status/leader"
|
|
|
|
[infrastructure.keycloak]
|
|
host = "keycloak"
|
|
port = 8080
|
|
external-port = 8180
|
|
admin-user = "admin"
|
|
health-check = "/"
|
|
|
|
[infrastructure.kafka]
|
|
host = "kafka"
|
|
port = 9092
|
|
external-port = 9092
|
|
zookeeper-port = 2181
|
|
health-check = "kafka-broker-api-versions --bootstrap-server localhost:9092"
|
|
|
|
# ===================================================================
|
|
# MONITORING CONFIGURATION
|
|
# ===================================================================
|
|
|
|
[monitoring]
|
|
[monitoring.prometheus]
|
|
host = "prometheus"
|
|
port = 9090
|
|
external-port = 9090
|
|
config-path = "/etc/prometheus/prometheus.yml"
|
|
health-check = "/-/healthy"
|
|
retention = "200h"
|
|
|
|
[monitoring.grafana]
|
|
host = "grafana"
|
|
port = 3000
|
|
external-port = 3000
|
|
admin-user = "admin"
|
|
health-check = "/api/health"
|
|
datasource-url = "http://prometheus:9090"
|
|
|
|
[monitoring.alertmanager]
|
|
host = "alertmanager"
|
|
port = 9093
|
|
external-port = 9093
|
|
health-check = "/-/healthy"
|
|
|
|
# ===================================================================
|
|
# ENVIRONMENT VARIABLES - Single Source of Truth
|
|
# Consolidates variables from .env.template and compose files
|
|
# ===================================================================
|
|
|
|
[environment]
|
|
[environment.application]
|
|
name = "Meldestelle"
|
|
version = "1.0.0"
|
|
description = "Pferdesport Meldestelle System"
|
|
environment = "development"
|
|
debug-mode = true
|
|
hot-reload = true
|
|
|
|
[environment.database]
|
|
host = "localhost"
|
|
port = 5432
|
|
name = "meldestelle"
|
|
user = "meldestelle"
|
|
password = "meldestelle"
|
|
max-pool-size = 10
|
|
min-pool-size = 5
|
|
auto-migrate = true
|
|
|
|
[environment.redis]
|
|
host = "localhost"
|
|
port = 6379
|
|
password = ""
|
|
database = 0
|
|
connection-timeout = 2000
|
|
read-timeout = 2000
|
|
use-pooling = true
|
|
max-pool-size = 8
|
|
min-pool-size = 2
|
|
|
|
[environment.security]
|
|
jwt-secret = "meldestelle-jwt-secret-key-for-development-change-in-production"
|
|
jwt-issuer = "meldestelle-api"
|
|
jwt-audience = "meldestelle-clients"
|
|
jwt-realm = "meldestelle"
|
|
api-key = "meldestelle-api-key-for-development"
|
|
|
|
[environment.logging]
|
|
level = "DEBUG"
|
|
structured = true
|
|
correlation-id = true
|
|
request-id-header = "X-Request-ID"
|
|
|
|
# ===================================================================
|
|
# HEALTH CHECK CONFIGURATION
|
|
# Standardizes health check endpoints and timeouts
|
|
# ===================================================================
|
|
|
|
[health-checks]
|
|
[health-checks.defaults]
|
|
interval = "15s"
|
|
timeout = "5s"
|
|
retries = 3
|
|
start-period = "30s"
|
|
|
|
[health-checks.development]
|
|
interval = "30s"
|
|
timeout = "5s"
|
|
retries = 3
|
|
start-period = "40s"
|
|
|
|
[health-checks.production]
|
|
interval = "10s"
|
|
timeout = "3s"
|
|
retries = 3
|
|
start-period = "20s"
|
|
|
|
# ===================================================================
|
|
# CLIENT APPLICATIONS
|
|
# ===================================================================
|
|
|
|
[clients]
|
|
[clients.web-app]
|
|
name = "web-app"
|
|
port = 4000
|
|
external-port = 4000
|
|
build-target = "wasmJsBrowserDistribution"
|
|
nginx-port = 4000
|
|
health-endpoint = "/health"
|
|
|
|
[clients.desktop-app]
|
|
name = "desktop-app"
|
|
vnc-port = 5901
|
|
novnc-port = 6080
|
|
build-target = "composeDesktop"
|
|
health-endpoint = "/health"
|
|
|
|
# ===================================================================
|
|
# BUILD CONFIGURATION
|
|
# Integration with existing Docker version management
|
|
# ===================================================================
|
|
|
|
[build]
|
|
gradle-version = "9.1.0"
|
|
java-version = "21"
|
|
node-version = "24.11.0"
|
|
nginx-version = "1.29-alpine"
|
|
docker-version = "1.0.0"
|
|
|
|
# ===================================================================
|
|
# ENVIRONMENT-SPECIFIC OVERRIDES
|
|
# ===================================================================
|
|
|
|
[environments]
|
|
[environments.development]
|
|
debug-enabled = true
|
|
log-level = "DEBUG"
|
|
hot-reload = true
|
|
cors-enabled = true
|
|
cors-origins = ["*"]
|
|
|
|
[environments.production]
|
|
debug-enabled = false
|
|
log-level = "INFO"
|
|
hot-reload = false
|
|
cors-enabled = true
|
|
cors-origins = ["https://meldestelle.at"]
|
|
tls-enabled = true
|
|
security-headers = true
|
|
|
|
[environments.testing]
|
|
debug-enabled = true
|
|
log-level = "DEBUG"
|
|
ephemeral-storage = true
|
|
test-containers = true
|