# ============================================ # JobPortal - Environment Variables # ============================================ # Copy to .env: cp .env.example .env # Generate secrets: python -c "import secrets; print(secrets.token_urlsafe(32))" # ----- Application ----- APP_NAME="JobPortal" APP_ENV=development DEBUG=true # REQUIRED in production. Min 32 chars. Generate with command above. SECRET_KEY=change-me-to-a-random-64-char-string # REQUIRED in production. Separate from SECRET_KEY for API key encryption. ENCRYPTION_KEY= API_V1_STR=/api/v1 BACKEND_URL=http://localhost:8000 FRONTEND_URL=http://localhost:3000 # ----- Database ----- # Full URL (takes priority if set): # DATABASE_URL=postgresql://jobportal:jobportal@localhost:5432/jobportal POSTGRES_SERVER=localhost POSTGRES_PORT=5432 POSTGRES_USER=jobportal POSTGRES_PASSWORD=jobportal POSTGRES_DB=jobportal # ----- Redis ----- REDIS_URL=redis://localhost:6379/0 REDIS_PASSWORD= # ----- Auth ----- # Access token: 15 minutes (short-lived, stored in memory) ACCESS_TOKEN_EXPIRE_MINUTES=15 # Refresh token: 30 days (stored server-side with revocation) REFRESH_TOKEN_EXPIRE_DAYS=30 # Google OAuth (optional) GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= # GitHub OAuth (optional) GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= # ----- LLM Providers ----- LLM_DEFAULT_PROVIDER=ollama OLLAMA_BASE_URL=http://localhost:11434 OPENAI_API_KEY= ANTHROPIC_API_KEY= GOOGLE_API_KEY= MISTRAL_API_KEY= DEEPSEEK_API_KEY= XAI_API_KEY= HUGGINGFACE_API_KEY= # ----- Cloudflare R2 (Production only) ----- R2_ACCOUNT_ID= R2_ACCESS_KEY_ID= R2_SECRET_ACCESS_KEY= R2_BUCKET_NAME=jobportal # ----- Email (optional) ----- SMTP_HOST= SMTP_PORT=587 SMTP_USER= SMTP_PASSWORD= EMAILS_FROM_EMAIL=noreply@jobportal.dev EMAILS_FROM_NAME=JobPortal # ----- Scraper ----- SCRAPER_MAX_CONCURRENT=5 SCRAPER_DEFAULT_DELAY=2.0 SCRAPER_USER_AGENT="JobPortal/1.0 (+https://github.com/anky2002/best)"