Creating Your First Flavor
This guide will walk you through creating a custom flavor from scratch. We’ll build a simple “Task” flavor that demonstrates all the core concepts using the actual patterns from the Tasteful codebase.Planning Your Flavor
Before coding, consider:- Domain responsibility: What specific functionality will this flavor handle?
- API endpoints: What HTTP routes do you need?
- Services: What business logic components are required?
- Dependencies: What other services or data stores do you need?
- CRUD operations for task items
- Task service for business logic
- Repository for data persistence
- Configuration for database connection
Step 1: Create the Basic Structure
Create the flavor directory structure (following the same pattern as the built-in HealthFlavor):Step 2: Create Configuration
Start with the configuration class inconfig.py. The BaseConfig class provides automatic environment variable loading and validation:
For comprehensive configuration management patterns, see the Configuration Management Guide.
Step 3: Create Repository
Create the repository for data access inrepository.py:
Step 4: Implement the Service
Create the business logic inservice.py:
Step 5: Create the Controller
Create the HTTP controller incontroller.py:
Step 6: Create the Flavor
Now implement the main flavor inflavor.py:
Step 7: Export the Flavor
Make your flavor importable by updating__init__.py:
Step 8: Register with Your Application
Add the flavor to your main application:Step 9: Test Your Flavor
Run your application and test the endpoints:http://localhost:8000/docs to see your API documentation automatically generated by FastAPI.
Advanced Features
Complex Dependency Injection
You can create more complex dependency graphs like in the main.py example:Environment-Specific Configuration
Use environment variables and validation in your config:.env file for local development:
For advanced configuration patterns including nested configuration, validation, and environment-specific setups, see the Configuration Management Guide.
Best Practices
1. Separation of Concerns
- Config: Configuration and settings
- Services: Business logic and orchestration
- Repositories: Data access and persistence
- Controllers: HTTP layer and request/response handling
- Flavors: Component composition and dependency wiring