202 lines
11 KiB
Plaintext
202 lines
11 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
|
|
# Max size per form file upload after base64 decode (default 10MB)
|
|
# FORM_SUBMISSION_MAX_FILE_BYTES=10485760
|
|
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=ZpIxby1vbCLGB7CPWZsAltZBEqkhwzgBpFOKDGj8
|
|
AWS_DEFAULT_REGION=ap-south-1
|
|
AWS_BUCKET=rapportapp
|
|
AWS_URL=https://did94hhhcgq1d.cloudfront.net
|
|
# Amazon Bedrock (AI event quick-create, concierge food/places summaries). Uses Converse API.
|
|
# 1) Bedrock console → Model access (ap-south-1): enable Amazon Nova Micro/Lite and Titan Embeddings.
|
|
# 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).
|
|
# Default chat/extract / Call 2 model (code fallback: meta.llama3-8b-instruct-v1:0):
|
|
# BEDROCK_MODEL_ID=meta.llama3-8b-instruct-v1:0
|
|
# Call 1 intent router (Nova Micro → auto-resolved to apac.amazon.nova-micro-v1:0 in ap-south-1)
|
|
# BEDROCK_ROUTER_MODEL_ID=amazon.nova-micro-v1:0
|
|
# BEDROCK_ROUTER_MODEL_FALLBACKS=amazon.nova-lite-v1:0
|
|
# Food/places summaries use amazon.nova-micro-v1:0 → auto-resolved to apac.amazon.nova-micro-v1:0 in ap-south-1
|
|
# BEDROCK_RECOMMENDATION_MODEL_ID=amazon.nova-micro-v1:0
|
|
# BEDROCK_RECOMMENDATION_MODEL_FALLBACKS=amazon.nova-lite-v1:0,meta.llama3-8b-instruct-v1:0
|
|
# Nova in APAC requires inference profiles — IAM must allow arn:...:inference-profile/apac.amazon.nova-*
|
|
# and foundation-model ARNs in the regions the profile routes to (see bedrock-iam-policy.example.json).
|
|
# Attach that policy to the same IAM user as AWS_ACCESS_KEY_ID (e.g. rapport_upload).
|
|
# BEDROCK_USE_INFERENCE_PROFILES=auto
|
|
# Log full LLM request/response payloads (also enabled when CONCIERGE_DEBUG=true). Call1/Call2 always log truncated payloads.
|
|
# BEDROCK_LOG_LLM=true
|
|
# 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:
|
|
# The embedded concierge always uses the two-stage pipeline (Call 1 router + intent
|
|
# handlers + optional Call 2 RAG). The legacy single-stage pipeline was removed.
|
|
# Verbose per-turn pipeline logging to the console, and returns a `debug` turn log in the chat
|
|
# response payload. Keep off in production.
|
|
# CONCIERGE_DEBUG=false
|
|
# 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
|
|
|
|
# Concierge food/places knowledge sync — Google Places + Bedrock summarization
|
|
# GOOGLE_PLACES_API_KEY=
|
|
# Stored in the default MONGODB_URI database (collections concierge_food, concierge_places)
|
|
# CONCIERGE_FOOD_COLLECTION=concierge_food
|
|
# CONCIERGE_PLACES_COLLECTION=concierge_places
|
|
# CONCIERGE_ACCOMMODATION_COLLECTION=concierge_accommodation
|
|
# Optional DB override (default: database name from MONGODB_URI)
|
|
# CONCIERGE_RECOMMENDATION_DB=
|
|
|
|
# HMAC secret for public form captcha tokens (falls back to JWT_SECRET if unset)
|
|
# FORM_CAPTCHA_SECRET=
|
|
|
|
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
|
|
|
|
# --- Microsite V2 (Handlebars static microsites on S3 + subdomain) ---
|
|
# S3 key prefix for template and published site objects (default: eventbuzz/microsite-v2)
|
|
# MICROSITE_V2_S3_PREFIX=eventbuzz/microsite-v2
|
|
# Public URL pattern for event subdomains; {subdomain} is replaced at runtime
|
|
# MICROSITE_V2_PUBLIC_BASE_URL=https://{subdomain}.eventbuzz.live
|
|
# Infra: wildcard DNS *.eventbuzz.live → CloudFront; map Host header to
|
|
# s3://{AWS_BUCKET}/{MICROSITE_V2_S3_PREFIX}/sites/{subdomain}/index.html
|
|
# Dev fallback: open published HTML via CloudFront URL of index.html key directly.
|
|
# Seed bundled microsite templates: npm run seed:global-microsite-v2-templates
|
|
# Or one template: npm run seed:eventify-template / npm run seed:eventre-template
|
|
# Dev: read template.json + template.html from disk instead of MongoDB/S3 (by template slug).
|
|
# Also serves CSS/JS/images from local assets for Preview via
|
|
# /api/public/microsite-v2-local/{slug}/assets/...
|
|
# MICROSITE_V2_READ_FROM_LOCAL=true
|
|
# Optional override for the templates folder (default: backend/microsite-v2-templates)
|
|
# MICROSITE_V2_TEMPLATES_DIR=/path/to/microsite-v2-templates
|
|
# Absolute API origin used in Preview asset URLs (defaults to request host, e.g. http://localhost:3001)
|
|
# API_PUBLIC_ORIGIN=http://localhost:3001
|
|
#
|
|
# Published-site target: s3 (default) | ec2. When ec2, rendered index.html +
|
|
# config.json are uploaded via SFTP to {REMOTE_ROOT}/{subdomain}/ on the EC2 box.
|
|
# Template HTML/schema/assets are still loaded from S3 regardless of this setting.
|
|
# MICROSITE_V2_PUBLISH_TARGET=ec2
|
|
# MICROSITE_V2_EC2_HOST=15.207.15.52
|
|
# MICROSITE_V2_EC2_USER=ubuntu
|
|
# MICROSITE_V2_EC2_PORT=22
|
|
# Path to the SSH private key ON THE API SERVER (chmod 600). Not your laptop path.
|
|
# MICROSITE_V2_EC2_KEY_PATH=/secure/path/VirtualEngage.pem
|
|
# MICROSITE_V2_EC2_REMOTE_ROOT=/var/www/eventbuzz
|
|
# MICROSITE_V2_EC2_CONNECT_TIMEOUT_MS=20000
|
|
|
|
# Comma-separated CORS origins (include console + public web app)
|
|
# CORS_ORIGIN=https://console.eventbuzz.live,https://web.eventbuzz.live
|
|
# Public routes under /api/public/* also echo the request Origin (any domain) when the API is up.
|
|
# Browser "access control checks" errors on api.eventbuzz.live often mean nginx 502 (Node not running), not CORS config.
|
|
|
|
# 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 |