""" Configuration constants loaded from environment variables for Joule Dynamics backend. Key settings: - MARKET_CACHE_TTL_SECONDS: Background refresh interval for market registry (default 300s). - GEOCODE_COUNTRY_FILTER: Optional ISO 3166-1 alpha-2 country code(s) to restrict Mapbox geocoding. """ import os from dotenv import load_dotenv load_dotenv() GROQ_API_KEY = os.environ.get("GROQ_API_KEY", "") GROQ_ROUTE_MODEL = os.environ.get("GROQ_ROUTE_MODEL", "openai/gpt-oss-20b") GROQ_FALLBACK_ROUTE_MODEL = os.environ.get( "GROQ_FALLBACK_ROUTE_MODEL", "groq/compound-mini" ) GROQ_SYNTHESIS_MODEL = os.environ.get("GROQ_SYNTHESIS_MODEL", "openai/gpt-oss-120b") GROQ_FALLBACK_SYNTHESIS_MODEL = os.environ.get( "GROQ_FALLBACK_SYNTHESIS_MODEL", "qwen/qwen3.6-27b" ) SUPABASE_URL = os.environ.get("SUPABASE_URL", "") SUPABASE_KEY = os.environ.get("SUPABASE_KEY", "") APP_WRITE_PROJECT_ID = os.environ.get("APP_WRITE_PROJECT_ID", "") APP_WRITE_API_ENDPOINT = os.environ.get("APP_WRITE_API_ENDPOINT", "") APP_WRITE_API_KEY = os.environ.get("APP_WRITE_API_KEY", "") APP_WRITE_BUCKET_ID = os.environ.get("APP_WRITE_BUCKET_ID", "") MAPBOX_ACCESS_TOKEN = os.environ.get("MAPBOX_ACCESS_TOKEN", "") CONTACT_EMAIL = os.environ.get("CONTACT_EMAIL", "hello@example.com") CONTACT_WHATSAPP = os.environ.get("CONTACT_WHATSAPP", "1234567890") MARKET_CACHE_TTL_SECONDS = int(os.environ.get("MARKET_CACHE_TTL_SECONDS", "300")) GEOCODE_COUNTRY_FILTER = os.environ.get("GEOCODE_COUNTRY_FILTER", "") EMAIL_SMTP_HOST = os.environ.get("EMAIL_SMTP_HOST", "smtp.gmail.com") EMAIL_SMTP_PORT = int(os.environ.get("EMAIL_SMTP_PORT", "587")) EMAIL_FROM_ADDRESS = os.environ.get("EMAIL_FROM_ADDRESS", "jouledynamicscto@gmail.com") EMAIL_SMTP_PASSWORD = os.environ.get("EMAIL_SMTP_PASSWORD", "") RESEND_API_KEY = os.environ.get("RESEND_API_KEY", "") RESEND_FROM_ADDRESS = os.environ.get( "RESEND_FROM_ADDRESS", "Pulse AI ", ) ALERT_BASE_URL = os.environ.get( "ALERT_BASE_URL", os.environ.get("CONFIRMATION_BASE_URL", "https://johnalbarkaibrahim-sentimentscope.hf.space"), ) SUPABASE_SERVICE_ROLE_KEY = os.environ.get( "SUPABASE_SERVICE_ROLE_KEY", os.environ.get("SUPABASE_KEY", "") ) INTERNAL_API_KEY = os.environ.get("INTERNAL_API_KEY", "") ALERT_COOLDOWN_HOURS = int(os.environ.get("ALERT_COOLDOWN_HOURS", "24")) MAX_SUBSCRIPTIONS_PER_EMAIL = int(os.environ.get("MAX_SUBSCRIPTIONS_PER_EMAIL", "5")) CONFIRMATION_EXPIRY_HOURS = int(os.environ.get("CONFIRMATION_EXPIRY_HOURS", "48"))