diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..47c790c --- /dev/null +++ b/.env.example @@ -0,0 +1,99 @@ +PORT=3010 +# Production on the API server: use 0.0.0.0, or keep localhost and reverse-proxy via nginx → 127.0.0.1:3010 +HOST=localhost +NODE_ENV=development + +# Same MongoDB as EventBuzz backend / dashboard +MONGODB_URI=mongodb://localhost:27017/eventbuzz + +# CORS (comma-separated). Dev also allows localhost / 127.0.0.1 any port. +# CORS_ORIGIN=http://localhost:5173 + +# AWS credentials for Bedrock Converse +AWS_ACCESS_KEY_ID= +AWS_SECRET_ACCESS_KEY= +# AWS_SESSION_TOKEN= +AWS_DEFAULT_REGION=ap-south-1 +# BEDROCK_REGION=ap-south-1 + +# Tool-calling agent (router + synthesis). Falls back to BEDROCK_CALL2_MODEL_ID. +# Haiku 4.5 in ap-south-1 needs the global inference profile (no in-region ID). +BEDROCK_AGENT_MODEL_ID=global.anthropic.claude-haiku-4-5-20251001-v1:0 +BEDROCK_CALL2_MODEL_ID=global.anthropic.claude-haiku-4-5-20251001-v1:0 +# BEDROCK_USE_INFERENCE_PROFILES=auto +# BEDROCK_LOG_LLM=true +# Prompt cache (default on). Haiku 4.5 caches tools + system + EVENT (1h TTL). +# Requires ~4096 tokens in the cached prefix before a hit shows in cacheReadInputTokens. +# BEDROCK_PROMPT_CACHE=false + +# Agenda "now" calculations +EVENT_TIME_ZONE=Asia/Kolkata + +# Public registration form URLs (same as backend) +# MICROSITE_PUBLIC_BASE_URL=https://web.eventbuzz.live +# MICROSITE_REGISTRATION_URL_TEMPLATE=https://web.eventbuzz.live/event/{eventId}/form/{formId} + +# Engagement hub unique links for reception drips ({engagementUrl}) +# ENGAGEMENT_PUBLIC_BASE_URL=https://engage.eventbuzz.live + +# S3 + CloudFront for participant check-in QR (same as backend) +# AWS_BUCKET=rapportapp +# AWS_URL=https://xxxx.cloudfront.net +# Optional local fallback origin when S3 is unset (defaults to http://HOST:PORT) +# CONCIERGE_PUBLIC_ORIGIN=http://localhost:3010 + +# Email OTP for personal agenda / ticket intents +OTP_PEPPER=change-me-concierge-otp +# CONCIERGE_OTP_MODE=fixed|dynamic (default: dynamic) +CONCIERGE_OTP_MODE=dynamic +# Used only when CONCIERGE_OTP_MODE=fixed +CONCIERGE_FIXED_OTP=123123 +# MAIL_* (preferred) or SMTP_* fallback — copy from backend/.env; if unset, OTP is logged to console +# MAIL_HOST=smtp.sendgrid.net +# MAIL_PORT=587 +# MAIL_USERNAME=apikey +# MAIL_PASSWORD= +# MAIL_ENCRYPTION=tls +# MAIL_FROM_ADDRESS= +# MAIL_FROM_NAME=Rapport Support +# Testing only: deliver all outbound mail here (chat still shows the real recipient) +# MAIL_TEST_REDIRECT_TO=you@example.com + +# Organizer escalation (emergency / lost & found / talk to human). +# Preferred: Organization.email on the bot's organization. Fallback: +# CONCIERGE_ORGANIZER_EMAIL=organizer@example.com + +# WhatsApp reception (same Meta app webhook verify token as chatbot). +# Point Meta webhook to https:///webhook/whatsapp +# META_WHATSAPP_WEBHOOK_VERIFY_TOKEN= +# META_GRAPH_API_VERSION=v21.0 +# Org token decrypt (must match backend SMTP_ENCRYPTION_KEY) +# SMTP_ENCRYPTION_KEY= +# ORG_SECRETS_KEY= +# META_WHATSAPP_DEFAULT_WABA_ID= +# META_WHATSAPP_ACCESS_TOKEN= +# META_WHATSAPP_DEFAULT_PHONE_NUMBER_ID= + +SMTP_HOST= +SMTP_PORT=587 +SMTP_USER= +SMTP_PASS= + +# LiveKit Cloud (embedded website voice). Keys from the project Keys page. +# Keep LIVEKIT_API_KEY and LIVEKIT_API_SECRET in concierge/.env, then run: +# npm run livekit-voice-worker +# LIVEKIT_URL=wss://prana-tsa7vuj2.livekit.cloud +# LIVEKIT_API_KEY= +# LIVEKIT_API_SECRET= +# LIVEKIT_AGENT_NAME=eventbuzz-concierge +# STT: Indian English (use "multi" if you need Hindi + English mixed). +# LIVEKIT_STT_MODEL=deepgram/nova-3 +# LIVEKIT_STT_LANGUAGE=en-IN +# TTS: female Indian English (Cartesia "Indian Customer Support Lady"). +# LIVEKIT_TTS_MODEL=cartesia/sonic-3 +# LIVEKIT_TTS_VOICE=ff1bb1a9-c582-4570-9670-5f46169d0fc8 +# LIVEKIT_TTS_LANGUAGE=en + +# SIMLI avatar (sample page /embed/avatar). Key stays on the server. +SIMLI_API_KEY= +SIMLI_FACE_ID= diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..867d4af --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules/ +.env +*.log +coverage/ +.nyc_output/ +.DS_Store diff --git a/.nvmrc b/.nvmrc new file mode 100644 index 0000000..209e3ef --- /dev/null +++ b/.nvmrc @@ -0,0 +1 @@ +20