| # ICH Screening Application - Environment Configuration | |
| # STEP 1: Copy this file to .env | |
| # STEP 2: Update values below with your configuration | |
| # STEP 3: DO NOT commit .env to version control! | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # APPLICATION & DEBUG | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| FLASK_ENV=production | |
| FLASK_DEBUG=False | |
| ICH_APP_DEBUG=False | |
| ICH_APP_PORT=7860 | |
| # Secret key for Flask sessions - MUST be set in production | |
| # Generate with: python -c "import secrets; print(secrets.token_hex(32))" | |
| SECRET_KEY=CHANGE_ME_IN_PRODUCTION_USE_COMMAND_ABOVE | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # DATABASE - NEON POSTGRESQL (REQUIRED) | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Your connection string from Neon | |
| DATABASE_URL=postgresql://<username>:<password>@<host>/<database>?sslmode=require | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # FILE UPLOADS & STORAGE | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ICH_MAX_UPLOAD_MB=2048 | |
| UPLOAD_BASE_DIR=uploads | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # MODEL CONFIGURATION | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Fold selection: ensemble | best | 0 | 1 | 2 | 3 | 4 | |
| ICH_FOLD_SELECTION=ensemble | |
| # Hugging Face model repository | |
| ICH_HF_MODEL_REPO=HarshCode/eff_b4_brain | |
| ICH_HF_TOKEN= | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # SMTP / EMAIL (REQUIRED FOR OTP + PASSWORD RESET EMAILS) | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| SMTP_HOST=smtp.your-provider.com | |
| SMTP_PORT=587 | |
| SMTP_USER=your-email@domain.com | |
| SMTP_PASSWORD=CHANGE_ME | |
| SMTP_FROM=no-reply@your-domain.com | |
| SMTP_USE_TLS=true | |
| # Optional aliases also supported by code (Brevo-style): | |
| # EMAIL_HOST, EMAIL_PORT, EMAIL_HOST_USER, EMAIL_HOST_PASSWORD, EMAIL_FROM, EMAIL_USE_TLS | |
| # Public base URL used in email links when app is behind proxy/load balancer. | |
| # Example local: ICH_PUBLIC_BASE_URL=http://127.0.0.1:7860 | |
| # Example prod: ICH_PUBLIC_BASE_URL=https://your-domain.com | |
| ICH_PUBLIC_BASE_URL= | |
| # Optional local debugging for auth emails (prints OTP/reset link to server logs) | |
| ICH_DEBUG_AUTH_EMAILS=false | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # CELERY + REDIS (ASYNC TASK QUEUE FOR BATCH PROCESSING) | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # Redis broker and result backend for Celery workers. | |
| # Local dev: redis://localhost:6379/0 | |
| # Upstash (cloud): rediss://default:<auth_token>@<hostname>:<port> | |
| # Leave empty to use default local Redis | |
| REDIS_URL= | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # LOGGING & MONITORING | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| ICH_LOG_LEVEL=INFO | |
| ICH_LOCAL_MODE=True | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # RENDER.COM DEPLOYMENT (optional) | |
| # ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ | |
| # RENDER_EXTERNAL_HOSTNAME is set automatically by Render | |