EventBuzz_Backend/.env.example

138 lines
7.4 KiB
Plaintext

NODE_ENV=development
PORT=3001
# Max JSON body size (bytes). Default 25MB if unset — needed for event create with base64 logo/banner.
# PAYLOAD_MAX_BYTES=26214400
MONGODB_URI=mongodb://localhost:27017/eventbuzz
JWT_SECRET=your-super-secret-jwt-key-change-this
JWT_REFRESH_SECRET=your-refresh-secret-key-change-this
JWT_EXPIRES_IN=15m
JWT_REFRESH_EXPIRES_IN=7d
# Allowed browser origins for cookies + CORS (must match the dashboard URL exactly: scheme + host + port).
# Comma-separated if you have several (e.g. staging + prod).
# Production example: CORS_ORIGIN=https://console.eventbuzz.live
# If this list does not include your dashboard origin, login/XHR will fail with "not allowed by Access-Control-Allow-Origin".
# eventbuzz Vite app often runs on :5174 — include it when NODE_ENV=production.
# In NODE_ENV!==production, http://localhost:* and http://127.0.0.1:* are also allowed automatically (production is whitelist-only).
FRONTEND_URL=http://localhost:5173
CORS_ORIGIN=http://localhost:5173,http://localhost:5174
# Optional: comma-separated origins for the GrapesJS microsite builder (iframe) calling the API
# WEBSITE_BUILDER_CORS_ORIGINS=http://localhost:5173,https://builder.example.com
# Google Sign-In (dashboard). Web client ID(s), comma-separated if multiple.
# Frontend: VITE_GOOGLE_CLIENT_ID must match the same OAuth Web client.
GOOGLE_CLIENT_ID=
# Email
SMTP_HOST=smtp.gmail.com
SMTP_PORT=587
SMTP_USER=your-email@gmail.com
SMTP_PASS=your-app-password
# Optional IANA timezone for the daily subscription-expiry job (node-cron). Default: server local time.
# CRON_TZ=Asia/Kolkata
# Payment — platform Razorpay (subscriptions / platform checkout). Either pair works:
# RAZORPAY_PLATFORM_KEY_ID / RAZORPAY_PLATFORM_KEY_SECRET (preferred)
# or RAZORPAY_KEY_ID / RAZORPAY_KEY_SECRET (alias; same as resolver fallback)
# Optional webhook verify: RAZORPAY_PLATFORM_WEBHOOK_SECRET
# You can also store keys in DB via super_admin → platform payment settings and set enabled there.
RAZORPAY_PLATFORM_KEY_ID=
RAZORPAY_PLATFORM_KEY_SECRET=
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
AWS_ACCESS_KEY_ID=AKIAWY2EEQXF5K4LDCI2
AWS_SECRET_ACCESS_KEY=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
AWS_DEFAULT_REGION=ap-south-1
AWS_BUCKET=rapportapp
AWS_URL=https://did94hhhcgq1d.cloudfront.net
# Amazon Bedrock (AI event quick-create). Uses Converse API.
# 1) Bedrock console → Model access (ap-south-1): enable Meta Llama 3 8B / 70B.
# 2) IAM user/role needs bedrock:InvokeModel + bedrock:Converse on those foundation models.
# See bedrock-iam-policy.example.json — attach to the same user as AWS_ACCESS_KEY_ID (e.g. rapport_upload).
# ap-south-1 model IDs: meta.llama3-8b-instruct-v1:0, meta.llama3-70b-instruct-v1:0
BEDROCK_MODEL_ID=meta.llama3-8b-instruct-v1:0
# Use only AWS_ACCESS_KEY_ID + AWS_SECRET_ACCESS_KEY here, OR AWS_PROFILE in your shell — not both (SDK warning).
# Optional: region override (defaults to AWS_DEFAULT_REGION). For Llama 3.1: BEDROCK_REGION=us-east-1
# BEDROCK_REGION=ap-south-1
# Optional: comma-separated extra model IDs to try if the primary is invalid
# BEDROCK_MODEL_FALLBACKS=meta.llama3-70b-instruct-v1:0
# Bedrock embeddings for WhatsApp concierge knowledge base (enable Titan Embeddings in Bedrock console)
# ap-south-1: prefer v2; v1 is 1536-dim, v2 default is 1024-dim — re-sync knowledge after switching models
# BEDROCK_EMBED_MODEL_ID=amazon.titan-embed-text-v2:0
# BEDROCK_EMBED_DIMENSIONS=1024
# BEDROCK_EMBED_MODEL_FALLBACKS=amazon.titan-embed-text-v1:0,amazon.titan-embed-text-v1
# Redis + BullMQ (WhatsApp concierge ingest / inbound workers in chatbot/)
# Local: redis://127.0.0.1:6379
# DigitalOcean Managed Redis: use rediss://...:25061 or REDIS_TLS=true with redis:// URL
# REDIS_URL=redis://127.0.0.1:6379
# REDIS_TLS=true
# CONCIERGE_QUEUE_PREFIX=eventbuzz:concierge:
# Concierge URL crawl (multi-page ingest for knowledge sources)
# CONCIERGE_CRAWL_MAX_PAGES=50
# CONCIERGE_CRAWL_MAX_ASSETS=20
# CONCIERGE_CRAWL_MAX_DEPTH=5
# CONCIERGE_CRAWL_TIMEOUT_MS=30000
# CONCIERGE_CRAWL_DELAY_MS=200
# CONCIERGE_CRAWL_MAX_ASSET_BYTES=15728640
# Public API base URL injected into published microsite HTML for contact forms (e.g. https://api.example.com/api or http://localhost:3001/api)
MICROSITE_API_BASE_URL=http://localhost:3001/api
# Public web app (forms, registration, default microsites)
# EVENTBUZZ_PUBLIC_URL=https://web.eventbuzz.live
# Registration link template for microsite/emailer CTAs: {eventId} and {formId} placeholders
# MICROSITE_REGISTRATION_URL_TEMPLATE=https://web.eventbuzz.live/event/{eventId}/register
# Published microsite folder base (custom microsite static HTML)
# MICROSITE_PUBLIC_BASE_URL=https://web.eventbuzz.live
# Comma-separated CORS origins (include console + public web app)
# CORS_ORIGIN=https://console.eventbuzz.live,https://web.eventbuzz.live
# Firebase Realtime Database (optional — quiz/poll sync). Paths relative to backend/ when starting the API from backend/
FIREBASE_DATABASE_URL=https://eventbuzz-live-default-rtdb.firebaseio.com
GOOGLE_APPLICATION_CREDENTIALS=./eventbuzz-live-firebase-adminsdk-fbsvc-bb3dcfd679.json
# Or if JSON lives in repo root: ../eventbuzz-live-firebase-adminsdk-fbsvc-bb3dcfd679.json
# Or: FIREBASE_SERVICE_ACCOUNT_PATH= / FIREBASE_SERVICE_ACCOUNT_JSON= (see firebase.js)
# Encrypted storage for organisation SMTP passwords (32-byte key: hex 64 chars or base64)
# SMTP_ENCRYPTION_KEY=
# Queue workers (email, WhatsApp, badge batches) run inside the API by default.
# Set EMBEDDED_QUEUE_WORKERS=false and run npm run email-worker / whatsapp-worker / badge-batch-worker separately if needed.
# EMBEDDED_QUEUE_WORKERS=true
# EMBEDDED_QUEUE_WORKER_POLL_MS=3000
# Standalone worker tuning (npm run email-worker, whatsapp-worker, badge-batch-worker)
# EMAIL_WORKER_POLL_MS=2000
# EMAIL_WORKER_MAX_ATTEMPTS=3
# WHATSAPP_WORKER_POLL_MS=2000
# WHATSAPP_WORKER_MAX_ATTEMPTS=3
# Min delay between Graph /messages calls (rate limiting)
# WHATSAPP_WORKER_MIN_INTERVAL_MS=400
# BADGE_BATCH_WORKER_POLL_MS=3000
# WhatsApp Cloud API (Meta Graph) — optional org-level config in Settings; these override when set:
# META_GRAPH_API_VERSION=v21.0
# Log every Meta Graph request + response to the server console (tokens shown as ***; large JSON truncated — see META_WHATSAPP_LOG_MAX_CHARS):
# META_WHATSAPP_DEBUG=1
# or: META_WHATSAPP_LOG=true
# Optional: max characters per logged JSON block (default 250000)
# META_WHATSAPP_LOG_MAX_CHARS=250000
# Meta App ID (numeric) — required for IMAGE header templates: sample URLs are uploaded via Graph resumable upload.
# META_WHATSAPP_APP_ID=
# or: META_APP_ID=
# Optional cap for header sample download size (bytes). Default 5MB.
# META_WHATSAPP_HEADER_UPLOAD_MAX_BYTES=5242880
# META_WHATSAPP_DEFAULT_WABA_ID=
# META_WHATSAPP_ACCESS_TOKEN=
# Must be a phone number id from GET /{WABA_ID}/phone_numbers on the *same* WABA as above (otherwise templates return Meta #132001).
# META_WHATSAPP_DEFAULT_PHONE_NUMBER_ID=
# Only if you must bypass GET /{waba-id}/phone_numbers validation (token cannot list phones but send is known-good):
# META_WHATSAPP_SKIP_PHONE_WABA_CHECK=1
# Cron: sync pending template statuses (default every 12 minutes)
# WHATSAPP_TEMPLATE_SYNC_CRON=*/12 * * * *
# Optional future webhook (template status updates from Meta):
# META_WHATSAPP_WEBHOOK_VERIFY_TOKEN=
# One-time fee (INR) org pays per event to unlock manual UPI checkout — recorded under Settings → Billing → invoices.
# EVENT_TICKETING_MANUAL_ENABLEMENT_FEE_INR=500