Configuration
Tasteful provides a robust configuration system built on top of Pydantic Settings, enabling type-safe configuration management with automatic environment variable loading, validation, and seamless integration with the dependency injection system.What is Configuration?
Configuration in Tasteful manages application settings, environment variables, and runtime parameters for your flavors. The configuration system is designed around theBaseConfig class, which extends Pydantic’s BaseSettings to provide:
- Type Safety: Full type hints and validation for all configuration values
- Environment Variable Integration: Automatic loading from environment variables and
.envfiles - Nested Configuration: Support for complex nested configuration structures
- Dependency Injection: Seamless integration with Tasteful’s dependency injection system
- Validation: Built-in validation with custom validators and constraints
BaseConfig Class
TheBaseConfig class serves as the foundation for all configuration in Tasteful applications:
Configuration Features
Environment Variable Loading
BaseConfig automatically loads configuration from environment variables, supporting multiple naming conventions:Nested Configuration
Support for complex nested configuration structures using nested delimiter:.env File Support
Automatic loading from.env files in the project root:
Type Validation
Built-in type validation and conversion:Integration with Other Components
Configuration classes integrate seamlessly with all layers of your Tasteful flavor through dependency injection.Configuration in Services
Services receive configuration objects to access business logic settings:Configuration in Repositories
Repositories use configuration for database connections and settings:Configuration in Controllers
Controllers can access configuration for HTTP-specific settings:Configuration Inheritance
Create specialized configurations by inheriting from base configurations:Best Practices
1. Use Type Hints
Always provide type hints for configuration fields:2. Provide Sensible Defaults
Provide defaults for non-critical configuration:3. Use Validation
Add validation for critical configuration values:4. Group Related Settings
Use nested configuration for related settings:Configuration Loading Order
Tasteful loads configuration in the following order (later sources override earlier ones):- Default values defined in the configuration class
- Environment variables matching field names
.envfile in the project root- Explicit values passed during instantiation