ADR-030: Configuration Service Centralization

Status

Accepted (September 12, 2025)

Context

During Step 4 of comprehensive DDD refactoring, configuration management was scattered and problematic:

Configuration Issues Identified

Specific Violations Found

# Before: Hardcoded values in multiple locations
web/app.py: "http://localhost:8001"
start-piper.sh: "export WEB_PORT=8081"

Decision

Implement centralized configuration management through dedicated domain service:

PortConfigurationService Implementation

Location: services/configuration/port_configuration_service.py

Key Features:

Configuration Architecture

class PortConfigurationService:
    def __init__(self):
        self.environment = os.getenv('ENVIRONMENT', 'development')
        self._load_configuration()

    def get_service_urls(self) -> Dict[str, str]:
        return {
            'backend': f'http://127.0.0.1:{self._backend_port}',
            'web': f'http://127.0.0.1:{self._web_port}',
            'api_base': f'http://127.0.0.1:{self._backend_port}'
        }

Integration Points

Consequences

Positive

Negative

Migration Results

Implementation Evidence

Validation Results (September 12, 2025)

Configuration Service Usage

# Application layer usage
config = PortConfigurationService()
service_urls = config.get_service_urls()
backend_port = config.get_port_for_service("backend")

Environment Configuration

# Development (default)
ENVIRONMENT=development

# Production deployment
ENVIRONMENT=production

Future Considerations

References