# .env.example # ============================================================================ # ENVIRONMENT VARIABLES TEMPLATE # ============================================================================ # Copy this file to .env and fill in your values. # For local development with Docker/Podman, these defaults should work out of the box. # # IMPORTANT: Never commit .env files with real credentials to version control! # ============================================================================ # =================== # Database Configuration # =================== # PostgreSQL connection settings # For container development, use the service name "postgres" DB_HOST=postgres DB_PORT=5432 DB_USER=postgres DB_PASSWORD=postgres DB_NAME=flyer_crawler_dev # =================== # Redis Configuration # =================== # Redis URL for caching and job queues # For container development, use the service name "redis" REDIS_URL=redis://redis:6379 # Optional: Redis password (leave empty if not required) REDIS_PASSWORD= # =================== # Application Settings # =================== NODE_ENV=development # Frontend URL for CORS and email links FRONTEND_URL=http://localhost:3000 # =================== # Authentication # =================== # REQUIRED: Secret key for signing JWT tokens (generate a random 64+ character string) JWT_SECRET=your-super-secret-jwt-key-change-this-in-production # OAuth Providers (Optional - enable social login) # Google OAuth - https://console.cloud.google.com/apis/credentials GOOGLE_CLIENT_ID= GOOGLE_CLIENT_SECRET= # GitHub OAuth - https://github.com/settings/developers GITHUB_CLIENT_ID= GITHUB_CLIENT_SECRET= # =================== # AI/ML Services # =================== # REQUIRED: Google Gemini API key for flyer OCR processing GEMINI_API_KEY=your-gemini-api-key # =================== # External APIs # =================== # Optional: Google Maps API key for geocoding store addresses GOOGLE_MAPS_API_KEY= # =================== # Email Configuration (Optional) # =================== # SMTP settings for sending emails (deal notifications, password reset) SMTP_HOST= SMTP_PORT=587 SMTP_SECURE=false SMTP_USER= SMTP_PASS= SMTP_FROM_EMAIL=noreply@example.com # =================== # Worker Configuration (Optional) # =================== # Concurrency settings for background job workers WORKER_CONCURRENCY=1 EMAIL_WORKER_CONCURRENCY=10 ANALYTICS_WORKER_CONCURRENCY=1 CLEANUP_WORKER_CONCURRENCY=10 # Worker lock duration in milliseconds (default: 2 minutes) WORKER_LOCK_DURATION=120000 # =================== # Error Tracking (ADR-015) # =================== # Sentry-compatible error tracking via Bugsink (self-hosted) # DSNs are created in Bugsink UI at http://localhost:8000 (dev) or your production URL # Backend DSN - for Express/Node.js errors SENTRY_DSN= # Frontend DSN - for React/browser errors (uses VITE_ prefix) VITE_SENTRY_DSN= # Environment name for error grouping (defaults to NODE_ENV) SENTRY_ENVIRONMENT=development VITE_SENTRY_ENVIRONMENT=development # Enable/disable error tracking (default: true) SENTRY_ENABLED=true VITE_SENTRY_ENABLED=true # Enable debug mode for SDK troubleshooting (default: false) SENTRY_DEBUG=false VITE_SENTRY_DEBUG=false # =================== # Source Maps Upload (ADR-015) # =================== # Auth token for uploading source maps to Bugsink # Create at: https://bugsink.projectium.com (Settings > API Keys) # Required for de-minified stack traces in error reports SENTRY_AUTH_TOKEN= # URL of your Bugsink instance (for source map uploads) SENTRY_URL=https://bugsink.projectium.com