from pydantic_settings import BaseSettings, SettingsConfigDict class Settings(BaseSettings): model_config = SettingsConfigDict(env_file=".env", extra="ignore") database_url: str = "postgresql+asyncpg://dnd:changeme@postgres:5432/dnd" # "xai" (default, cloud) or "lmstudio" (local, OpenAI-compatible server) llm_provider: str = "xai" xai_api_key: str = "" xai_base_url: str = "https://api.x.ai/v1" dm_model: str = "grok-4.6" # host.docker.internal, not a LAN IP — the backend runs inside Docker Desktop's own # network namespace, which can reach the Windows host via this name but not necessarily # via whatever IP the host itself sees for the machine (e.g. a WSL2-internal address). lmstudio_base_url: str = "http://host.docker.internal:1234/v1" lmstudio_api_key: str = "" jwt_secret: str = "dev-insecure-secret-change-me" reset_password_secret: str = "dev-insecure-secret-change-me" verification_token_secret: str = "dev-insecure-secret-change-me" smtp_host: str = "" smtp_port: int = 587 smtp_user: str = "" smtp_password: str = "" smtp_from: str = "no-reply@dungeonsdragons.tstratmann.de" frontend_origin: str = "http://localhost:5173" settings = Settings()