""" Centralized runtime settings for the Doof backend. No external dependencies; reads from environment only so it can be imported anywhere (including tests) without side effects. """ from __future__ import annotations import os from dataclasses import dataclass from typing import Optional @dataclass(frozen=True) class Settings: # Database database_path: str = os.environ.get("DOOF_DB", "./data/doof.sqlite") # Environment flags prod: bool = os.environ.get("DOOF_PROD", "false").lower() in {"1", "true", "yes"} # Frontend dev server for reverse proxy in non-prod frontend_dev_url: str = os.environ.get("FRONTEND_DEV_URL", "http://localhost:8000/") # JWT settings jwt_issuer: str = os.environ.get("DOOF_JWT_ISSUER", "doof-backend") jwt_audience: str = os.environ.get("DOOF_JWT_AUDIENCE", "doof-web") access_ttl_seconds: int = int(os.environ.get("DOOF_JWT_ACCESS_TTL", "900")) # 15 minutes refresh_ttl_seconds: int = int(os.environ.get("DOOF_JWT_REFRESH_TTL", "2592000")) # 30 days access_secret_b64: Optional[str] = os.environ.get("DOOF_JWT_ACCESS_SECRET_B64") refresh_secret_b64: Optional[str] = os.environ.get("DOOF_JWT_REFRESH_SECRET_B64") # A module-level singleton for convenience imports settings = Settings()