Skip to main content

Configuration

The BookWorm application uses a comprehensive configuration system built on .NET's configuration framework, enhanced with Aspire-specific features and custom extensions.

Configuration Architecture

Configuration Sources

  • appsettings.json - Base application settings
  • appsettings.Environment.json - Environment-specific overrides
  • Environment Variables - Container and cloud-native configuration
  • Azure App Configuration - Centralized configuration management (when deployed to Azure)
  • Launch Profiles - Development-time configuration
  • Aspire Configuration - Service discovery and orchestration settings

Configuration Providers

  • JSON Configuration Provider - File-based configuration
  • Environment Variables Provider - System and container environment variables
  • Azure Configuration Provider - Cloud-based configuration service
  • Memory Configuration Provider - Runtime configuration overrides

Service-Specific Configuration

Service Defaults Configuration

  • Document Options - OpenAPI documentation settings
  • Authentication Options - Keycloak and JWT configuration
  • Service Discovery - Aspire service registration settings
  • Health Check Configuration - Health endpoint and check intervals

Database Configuration

  • Connection Strings - PostgreSQL connection configuration
  • Entity Framework Options - Database context and migration settings
  • Naming Conventions - Snake case naming for PostgreSQL compatibility
  • Connection Pooling - Database connection management

Message Bus Configuration

  • RabbitMQ Settings - Message broker connection and queue configuration
  • MassTransit Options - Message routing and serialization settings
  • Retry Policies - Message delivery retry and error handling
  • Dead Letter Queue - Failed message handling configuration

Environment Management

Development Environment

  • Launch Profiles - Visual Studio and VS Code debugging configuration
  • Local Service Discovery - Development-time service resolution
  • Hot Reload Support - Configuration changes without restart
  • Debug Logging - Enhanced logging for development

Staging/Production Environment

  • Configuration Validation - Startup configuration validation
  • Secrets Management - Secure storage of sensitive configuration
  • Configuration Reloading - Runtime configuration updates
  • Health Checks - Configuration-dependent health monitoring

Configuration Extensions

Custom Configuration Utilities

  • Service Discovery Utilities - Helper methods for service endpoint resolution
  • Launch Profile Extensions - Enhanced development configuration
  • Configuration Validation - Strong typing and validation rules
  • Environment Detection - Runtime environment identification

Aspire Integration

  • Orchestrator Configuration - Service orchestration and dependency management
  • Resource Configuration - Infrastructure resource configuration
  • Service Binding - Automatic service endpoint configuration
  • Configuration Binding - Strongly-typed configuration objects

Best Practices

Configuration Security

  • Secrets Separation - Separate sensitive data from regular configuration
  • Environment-Specific Secrets - Different secrets per environment
  • Access Control - Restricted access to production configuration
  • Encryption - Encrypted configuration values for sensitive data

Configuration Validation

  • Startup Validation - Validate configuration at application startup
  • Required Settings - Fail fast for missing critical configuration
  • Type Safety - Use strongly-typed configuration objects
  • Default Values - Sensible defaults for optional settings

Configuration Monitoring

  • Configuration Changes - Track and audit configuration modifications
  • Health Checks - Monitor configuration-dependent services
  • Logging - Log configuration loading and validation events
  • Metrics - Track configuration-related performance metrics