asadullahshafique's picture
Add FastAPI backend with Docker
04a921d
"""Environment configuration loader."""
from functools import lru_cache
from pydantic_settings import BaseSettings
class Settings(BaseSettings):
"""Application settings loaded from environment variables."""
# Database
database_url: str = "postgresql+asyncpg://user:password@localhost:5432/todo"
# Security
jwt_secret: str = "your-super-secret-jwt-key-min-32-characters-long"
jwt_algorithm: str = "HS256"
jwt_expiry_days: int = 7
# CORS
cors_origins: str = "http://localhost:3000"
# Server
host: str = "0.0.0.0"
port: int = 8000
debug: bool = True
@property
def cors_origins_list(self) -> list[str]:
"""Parse CORS origins from comma-separated string."""
return [origin.strip() for origin in self.cors_origins.split(",")]
model_config = {
"env_file": ".env",
"env_file_encoding": "utf-8",
"case_sensitive": False,
}
@lru_cache
def get_settings() -> Settings:
"""Get cached settings instance."""
return Settings()