from functools import lru_cache from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict( env_prefix="LIFETRACK_", env_file=".env", extra="ignore" ) # Database (psycopg v3 driver) database_url: str = ( "postgresql+psycopg://lifetrack:lifetrack@localhost:5432/lifetrack" ) # Auth jwt_secret: str = "change-me-in-env" # MUST be overridden in production jwt_algorithm: str = "HS256" access_token_expire_minutes: int = 60 * 24 * 7 # 7 days (home deployment) # Time timezone: str = "Europe/Paris" # default tz for daily aggregations # Imports max_upload_bytes: int = 20 * 1024 * 1024 # 20 MiB # Dev only: Vite dev server origin(s), comma-separated env value cors_origins: list[str] = [] @lru_cache def get_settings() -> Settings: return Settings()