DocumentationConfiguration
Configuration
See the Tunables Reference for the exact list of algorithms and thresholds.
Required vs Optional Variables
Required:
DATABASE_URL,REDIS_URL,QDRANT_URL,SECRET_KEY,NEWSLETTER_PUBLIC_URL.
Optional but critical for AI:
OPENROUTER_API_KEY(Required for relevance tie-breaking and categorization).
Secrets Handling
- In Docker Compose: Loaded tightly from the
.envfile mapped securely to the container. - In Kubernetes: Expected to be mapped into the Pod
envspec via Secrets.
Internal vs Public URLs
Due to container networking:
NEWSLETTER_API_INTERNAL_URL(Internal) should reference inner hostnames likehttp://nginxwhen the frontend talks to the backend over a private Docker or Kubernetes network.NEWSLETTER_PUBLIC_URL(Public) should point to your real FQDN (e.g.https://news.mydomain.com) used in emails.
For local Docker Compose development, the default split is usually:
NEWSLETTER_API_INTERNAL_URL=http://nginxNEWSLETTER_PUBLIC_URL=http://127.0.0.1:8080
Email Provider (Anymail)
Newsletter intake relies on Resend webhooks and Django Anymail forwarding. Configured via:
RESEND_API_KEYRESEND_INBOUND_SECRETDEFAULT_FROM_EMAIL
LLM Provider Routing
Select between local, ollama or remote providers using EMBEDDING_PROVIDER. Set URLs correctly to point to either the internal container (http://ollama:11434) or external APIs (https://api.openai.com/v1).
OAuth Provider Toggles
If LINKEDIN_CLIENT_ID or REDDIT_CLIENT_ID are present, their respective capabilities light up dynamically in the application.