-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.sample
More file actions
109 lines (84 loc) · 4.37 KB
/
.env.sample
File metadata and controls
109 lines (84 loc) · 4.37 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
# ──────────────────────────────────────────────
# Required
# ──────────────────────────────────────────────
# Server
PORT=5200
NODE_ENV=development
# Database
DATABASE_URL=
# Moodle LMS
MOODLE_BASE_URL=
MOODLE_MASTER_KEY=
# Authentication
JWT_SECRET=
REFRESH_SECRET=
# Optional JWT tuning (defaults shown)
# JWT_ACCESS_TOKEN_EXPIRY=300s
# JWT_REFRESH_TOKEN_EXPIRY=30d
# JWT_BCRYPT_ROUNDS=10
# Redis (caching and job queues)
REDIS_URL=redis://localhost:6379
# CORS
CORS_ORIGINS=["*", "http://localhost:4100"]
# OpenAI (used by ChatKit and recommendation engine)
OPENAI_API_KEY=
# ──────────────────────────────────────────────
# Optional: Server
# ──────────────────────────────────────────────
# Enable Swagger documentation (default: disabled)
# OPENAPI_MODE=true
# Super admin credentials (defaults shown)
# SUPER_ADMIN_USERNAME=superadmin
# SUPER_ADMIN_PASSWORD=password123
# ──────────────────────────────────────────────
# Optional: Moodle sync
# ──────────────────────────────────────────────
# Run Course and Enrollment sync on startup (default: disabled)
# SYNC_ON_STARTUP=true
# Skip category sync on startup (default: disabled)
# Useful for local dev — category sync is heavy and rarely changes
# DISABLE_SYNC_CATEGORY_ON_STARTUP=true
# Moodle sync HTTP concurrency (default: 3, max: 20)
# MOODLE_SYNC_CONCURRENCY=3
# ──────────────────────────────────────────────
# Optional: Rate Limiting
# ──────────────────────────────────────────────
# THROTTLE_TTL_SECONDS=60 # Time window in seconds (default: 60, min: 1)
# THROTTLE_LIMIT=60 # Max requests per window (default: 60, min: 1)
# ──────────────────────────────────────────────
# Optional: Redis
# ──────────────────────────────────────────────
# REDIS_KEY_PREFIX=faculytics:
# REDIS_CACHE_TTL=60
# ──────────────────────────────────────────────
# Optional: BullMQ job queue
# ──────────────────────────────────────────────
# BULLMQ_DEFAULT_ATTEMPTS=3
# BULLMQ_DEFAULT_BACKOFF_MS=5000
# BULLMQ_DEFAULT_TIMEOUT_MS=120000
# BULLMQ_HTTP_TIMEOUT_MS=90000
# BULLMQ_STALLED_INTERVAL_MS=30000
# BULLMQ_MAX_STALLED_COUNT=2
# ──────────────────────────────────────────────
# Optional: Analysis workers
# ──────────────────────────────────────────────
# SENTIMENT_WORKER_URL=http://localhost:3001/sentiment
# BULLMQ_SENTIMENT_CONCURRENCY=3
# EMBEDDINGS_WORKER_URL=http://localhost:3001/embeddings
# EMBEDDINGS_CONCURRENCY=3
# TOPIC_MODEL_WORKER_URL=http://localhost:3001/topic-model
# TOPIC_MODEL_CONCURRENCY=1
# RECOMMENDATIONS_CONCURRENCY=1
# RECOMMENDATIONS_MODEL=gpt-4o-mini
# ──────────────────────────────────────────────
# Optional: Report Generation (R2 Storage)
# App starts without these — report endpoints return 503
# ──────────────────────────────────────────────
# CF_ACCOUNT_ID=
# R2_ACCESS_KEY_ID=
# R2_SECRET_ACCESS_KEY=
# R2_BUCKET_NAME=faculytics-reports
# REPORT_GENERATION_CONCURRENCY=2
# REPORT_PRESIGNED_URL_EXPIRY_SECONDS=3600
# REPORT_BATCH_MAX_SIZE=100
# REPORT_RETENTION_DAYS=7