- deploy.sh: one-command deploy script (--init for first time, bare for updates) - docker-compose.prod.yml: production stack with nginx, multi-worker uvicorn, no volume mounts for code - nginx/nginx.conf: reverse proxy with rate limiting, WebSocket support, static asset caching - Fix login to use real backend API instead of mock localStorage tokens - Add auth guard to AppShell (prevents flash-of-content on unauthenticated routes) - JWT claims decoded client-side for user info (no extra /me call needed) - Switch logo from missing .jpeg to .svg - Frontend API URL defaults to same-origin (works behind nginx without CORS) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
23 lines
656 B
Python
23 lines
656 B
Python
from pydantic_settings import BaseSettings
|
|
|
|
|
|
class Settings(BaseSettings):
|
|
"""Application settings loaded from environment variables."""
|
|
|
|
DATABASE_URL: str = "postgresql+asyncpg://transcreation:transcreation@db:5432/transcreation"
|
|
REDIS_URL: str = "redis://redis:6379/0"
|
|
ANTHROPIC_API_KEY: str = ""
|
|
JWT_SECRET_KEY: str = "CHANGE_ME_TO_A_RANDOM_SECRET"
|
|
JWT_ALGORITHM: str = "HS256"
|
|
JWT_EXPIRY_HOURS: int = 8
|
|
STORAGE_ROOT: str = "/storage"
|
|
LLM_MODEL: str = "claude-sonnet-4-6"
|
|
|
|
model_config = {
|
|
"env_file": ".env",
|
|
"env_file_encoding": "utf-8",
|
|
"extra": "ignore",
|
|
}
|
|
|
|
|
|
settings = Settings()
|