-
Notifications
You must be signed in to change notification settings - Fork 3
Expand file tree
/
Copy path.env.example
More file actions
140 lines (116 loc) · 5.67 KB
/
.env.example
File metadata and controls
140 lines (116 loc) · 5.67 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
# =============================================================================
# ZOOM APP CREDENTIALS
# =============================================================================
# Get these from https://marketplace.zoom.us/ → Your App → App Credentials
ZOOM_CLIENT_ID=your_client_id_here
ZOOM_CLIENT_SECRET=your_client_secret_here
# Zoom App ID (optional, for selecting meetings for auto-opening)
# Get from the app marketplace: https://marketplace.zoom.us/apps
# The app ID is in the path of the app page URL:
# https://marketplace.zoom.us/develop/applications/{your-app-id}
ZOOM_APP_ID=
# =============================================================================
# PUBLIC URL
# =============================================================================
# For local development: Your ngrok HTTPS URL (e.g., https://abc123.ngrok-free.app)
# For production: Your domain (e.g., https://arlo-meeting-assistant.example.com)
PUBLIC_URL=https://your-ngrok-url.ngrok-free.app
# OAuth Redirect URI (automatically constructed from PUBLIC_URL)
# Must match exactly what's configured in Zoom Marketplace
ZOOM_APP_REDIRECT_URI=${PUBLIC_URL}/api/auth/callback
# =============================================================================
# DATABASE
# =============================================================================
# PostgreSQL connection string
# Format: postgresql://USER:PASSWORD@HOST:PORT/DATABASE
# Local development (Docker): postgresql://postgres:postgres@postgres:5432/meeting_assistant
# Local development (Manual): postgresql://postgres:postgres@localhost:5432/meeting_assistant
DATABASE_URL=postgresql://postgres:postgres@postgres:5432/meeting_assistant
# =============================================================================
# SECURITY KEYS
# =============================================================================
# Session secret for Express session management
# Generate with: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
SESSION_SECRET=your_64_character_random_string_here
# Encryption key for storing Zoom tokens (must be exactly 32 characters)
# Generate with: node -e "console.log(require('crypto').randomBytes(16).toString('hex'))"
REDIS_ENCRYPTION_KEY=your_32_character_encryption_key
# =============================================================================
# REDIS (Optional - for WebSocket scaling)
# =============================================================================
# Leave empty to use in-memory store (fine for development/single instance)
# For production with multiple instances: redis://localhost:6379
REDIS_URL=
# =============================================================================
# AI CONFIGURATION (OpenRouter)
# =============================================================================
# OpenRouter API key (OPTIONAL - free models work without key)
# Get from: https://openrouter.ai/keys
# Leave empty to use free models with rate limits (10 req/min)
OPENROUTER_API_KEY=
# Default AI model to use
# Free options (no API key needed):
# - google/gemini-2.0-flash-thinking-exp:free (recommended)
# - meta-llama/llama-3.2-3b-instruct:free
# - qwen/qwen-2.5-7b-instruct:free
# Premium options (requires API key):
# - anthropic/claude-3.5-sonnet
# - openai/gpt-4o
DEFAULT_MODEL=google/gemini-2.0-flash-thinking-exp:free
# Fallback model if default fails
FALLBACK_MODEL=meta-llama/llama-3.2-3b-instruct:free
# =============================================================================
# FEATURE FLAGS
# =============================================================================
# Enable AI features (chat, suggestions, summaries)
AI_ENABLED=true
# Enable background extraction jobs (action items, decisions)
EXTRACTION_ENABLED=false
# Enable public sharing links (future feature)
PUBLIC_LINKS_ENABLED=false
# =============================================================================
# SERVER CONFIGURATION
# =============================================================================
# Backend server port
PORT=3000
# Node environment
NODE_ENV=development
# Frontend URL (for CORS)
FRONTEND_URL=http://localhost:3001
# =============================================================================
# RTMS CONFIGURATION
# =============================================================================
# RTMS webhook secret (optional, for webhook signature validation)
RTMS_WEBHOOK_SECRET=
# RTMS server port (if running separately)
RTMS_PORT=3002
# RTMS SDK log level (v1.0+, replaces configureLogger())
# Options: error, warn, info, debug, trace
# Set via ZM_RTMS_LOG_LEVEL env var (handled in docker-compose.yml)
# ZM_RTMS_LOG_LEVEL=debug
# =============================================================================
# LOGGING
# =============================================================================
# Log level: error, warn, info, debug
LOG_LEVEL=info
# =============================================================================
# CORS CONFIGURATION
# =============================================================================
# Allowed origins for CORS (comma-separated)
CORS_ORIGINS=${PUBLIC_URL},http://localhost:3001
# =============================================================================
# RATE LIMITING
# =============================================================================
# Rate limits for AI requests (requests per minute)
RATE_LIMIT_FREE=10
RATE_LIMIT_PREMIUM=100
# =============================================================================
# FILE STORAGE
# =============================================================================
# Directory for VTT files
VTT_STORAGE_PATH=./storage/vtt
# S3-compatible storage (optional, for production)
S3_BUCKET=
S3_REGION=
S3_ACCESS_KEY=
S3_SECRET_KEY=