from pydantic_settings import BaseSettings class Settings(BaseSettings): """Application settings via pydantic-settings. Reads from env vars and .env.""" # Django DJANGO_SECRET_KEY: str = "django-insecure-change-me-in-production" DJANGO_DEBUG: bool = False DJANGO_ALLOWED_HOSTS: list[str] = ["*"] # PostgreSQL DB_NAME: str = "cloud_reader" DB_USER: str = "postgres" DB_PASSWORD: str = "postgres" DB_HOST: str = "localhost" DB_PORT: int = 5432 # JWT JWT_ACCESS_TOKEN_LIFETIME_MINUTES: int = 60 JWT_REFRESH_TOKEN_LIFETIME_DAYS: int = 7 # CORS CORS_ALLOWED_ORIGINS: list[str] = [ "http://localhost:5173", "http://localhost:3000", ] # Open Library metadata enrichment OPENLIBRARY_ENABLED: bool = True OPENLIBRARY_PREFERRED_LANG: str = "es" OPENLIBRARY_FALLBACK_LANG: str = "en" OPENLIBRARY_TIMEOUT_SECONDS: float = 10.0 OPENLIBRARY_CONNECT_TIMEOUT_SECONDS: float = 15.0 OPENLIBRARY_USER_AGENT: str = "CloudReader/1.0 (https://github.com/cloud-reader)" @property def DATABASE_URL(self) -> str: return ( f"postgresql://{self.DB_USER}:{self.DB_PASSWORD}" f"@{self.DB_HOST}:{self.DB_PORT}/{self.DB_NAME}" ) model_config = {"env_file": ".env", "env_file_encoding": "utf-8"} settings = Settings()