munch-ease-backend/settings.py
2025-11-05 20:07:55 +11:00

36 lines
1.3 KiB
Python

"""
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()