-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
98 lines (81 loc) · 5.04 KB
/
.env.example
File metadata and controls
98 lines (81 loc) · 5.04 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
# ─── App ───────────────────────────────────────────────────────
NODE_ENV=development
PORT=3500
API_VERSION=v1
# ─── MongoDB ───────────────────────────────────────────────────
# Local: mongodb://localhost:27017/lexai
# Atlas: mongodb+srv://<user>:<pass>@cluster.mongodb.net/<db>?appName=<app>
MONGO_URI=mongodb://localhost:27017/lexai
# ─── Redis ─────────────────────────────────────────────────────
REDIS_HOST=localhost
REDIS_PORT=6379
REDIS_PASSWORD=
# ─── RabbitMQ ──────────────────────────────────────────────────
RABBITMQ_URL=amqp://guest:guest@localhost:5672
RABBITMQ_USER=guest
RABBITMQ_PASS=guest
ANALYSIS_QUEUE=lexai.analysis.queue
ALERT_QUEUE=lexai.alert.queue
DLX_EXCHANGE=lexai.dlx
# ─── PASETO ────────────────────────────────────────────────────
# REQUIRED: generate a strong 32+ char secret in production (min 32 chars)
# Use: node -e "console.log(require('crypto').randomBytes(32).toString('hex'))"
PASETO_LOCAL_SECRET=change-me-to-a-random-string-at-least-32-chars-long!!
PASETO_ACCESS_EXPIRY=15m
PASETO_REFRESH_EXPIRY=7d
PASETO_REFRESH_COOKIE_MAX_AGE_MS=604800000
# ─── AI Provider Configuration ─────────────────────────────────
# Provider: 'groq' (default, fastest) or 'openrouter' (multi-model proxy)
AI_PROVIDER=groq
AI_PRIMARY_MODEL=llama-3.3-70b-versatile
AI_FALLBACK_MODEL=llama-3.1-8b-instant
AI_DIFF_MODEL=llama-3.1-8b-instant
AI_REQUEST_TIMEOUT_MS=60000
# ─── Groq (primary) ───────────────────────────────────────────
# Get your key at: https://console.groq.com/keys
GROQ_API_KEY=gsk_your-groq-api-key-here
GROQ_BASE_URL=https://api.groq.com/openai/v1
# ─── OpenRouter (optional fallback) ───────────────────────────
# Leave empty to disable. Get key at: https://openrouter.ai/keys
OPENROUTER_API_KEY=
OPENROUTER_BASE_URL=https://openrouter.ai/api/v1
# ─── Rate Limiting ─────────────────────────────────────────────
RATE_LIMIT_WINDOW_MS=60000
RATE_LIMIT_MAX=100
# ─── File Upload ───────────────────────────────────────────────
MAX_FILE_SIZE_MB=5
ALLOWED_MIME_TYPES=application/pdf,application/vnd.openxmlformats-officedocument.wordprocessingml.document,text/plain
# ─── CORS ──────────────────────────────────────────────────────
ALLOWED_ORIGINS=http://localhost:3000,http://localhost:5173
# ─── Email ─────────────────────────────────────────────────────
# Dev: use Ethereal (https://ethereal.email) — free fake SMTP inbox
# Prod: use SendGrid, Resend, SES, etc.
SMTP_HOST=smtp.ethereal.email
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=your-ethereal-user
SMTP_PASS=your-ethereal-pass
EMAIL_FROM=noreply@lexai.io
# ─── External APIs ─────────────────────────────────────────────
REST_COUNTRIES_URL=https://restcountries.com/v3.1
WORLD_TIME_API_URL=https://worldtimeapi.org/api
# IPinfo — IP geolocation for login security
# Free without token (50k req/mo). Get a token at https://ipinfo.io/signup for higher limits.
IPINFO_TOKEN=
# HaveIBeenPwned — email breach checking
# Requires a paid API key from https://haveibeenpwned.com/API/Key
# Leave empty to disable breach checks (feature degrades gracefully).
HIBP_API_KEY=
# The following APIs require NO key and are used automatically when configured:
# - EVA (email validation): https://eva.pingutil.com/
# - Disify (disposable emails): https://www.disify.com/
# - EmailRep (email reputation): https://emailrep.io/
# - Frankfurter (currency rates): https://www.frankfurter.app/
# - Nager.Date (public holidays): https://date.nager.at/
# ─── Admin Bootstrap (seed script only) ────────────────────────
ADMIN_EMAIL=admin@lexai.io
ADMIN_PASSWORD=Admin112233
# ─── Redis Token TTLs ──────────────────────────────────────────
EMAIL_VERIFICATION_EXPIRY=86400
PASSWORD_RESET_EXPIRY=3600
OTP_EXPIRY=600