# ====== Core ====== NODE_ENV=production # ====== Frontend (Next.js) ====== NEXT_PUBLIC_APP_NAME=Customer Portal NEXT_PUBLIC_APP_VERSION=1.0.0 # If using Plesk single domain with /api proxied to backend, set to your main domain # Example: https://portal.example.com or https://example.com NEXT_PUBLIC_API_BASE=https://CHANGE_THIS # ====== Backend (NestJS BFF) ====== BFF_PORT=4000 APP_BASE_URL=https://CHANGE_THIS # ====== Database (PostgreSQL) ====== POSTGRES_DB=portal_prod POSTGRES_USER=portal POSTGRES_PASSWORD=CHANGE_THIS # Prisma style DATABASE_URL for Postgres inside Compose network # For Plesk Compose, hostname is the service name 'database' DATABASE_URL=postgresql://portal:${POSTGRES_PASSWORD}@database:5432/${POSTGRES_DB}?schema=public # ====== Redis ====== REDIS_URL=redis://cache:6379/0 # ====== Security ====== JWT_SECRET=CHANGE_THIS JWT_EXPIRES_IN=7d BCRYPT_ROUNDS=12 # ====== CORS ====== # If portal: https://portal.example.com ; if root domain: https://example.com CORS_ORIGIN=https://CHANGE_THIS # ====== External APIs (optional) ====== WHMCS_BASE_URL= WHMCS_API_IDENTIFIER= WHMCS_API_SECRET= SF_LOGIN_URL= SF_CLIENT_ID= SF_PRIVATE_KEY_PATH=/app/secrets/salesforce.key SF_USERNAME= # ====== Logging ====== LOG_LEVEL=info LOG_FORMAT=json # ====== Email (SendGrid) ====== # API key: https://app.sendgrid.com/settings/api_keys SENDGRID_API_KEY= # From address for outbound email EMAIL_FROM=no-reply@yourdomain.com EMAIL_FROM_NAME=Assist Solutions # Master email switch EMAIL_ENABLED=true # Queue emails for async delivery (recommended) EMAIL_USE_QUEUE=true # Enable SendGrid sandbox mode (use true in non-prod to avoid delivery) SENDGRID_SANDBOX=false # Optional: dynamic template IDs (use {{resetUrl}} for reset template) EMAIL_TEMPLATE_RESET= EMAIL_TEMPLATE_WELCOME= # ====== Node options ====== NODE_OPTIONS=--max-old-space-size=512