-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathenv.example
More file actions
72 lines (62 loc) · 3.98 KB
/
env.example
File metadata and controls
72 lines (62 loc) · 3.98 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
# ══════════════════════════════════════════════════════════════
# Proof-of-Learn — Environment Variables
# Copy this file to .env.local and fill in the values.
# NEVER commit .env.local to git.
# ══════════════════════════════════════════════════════════════
# ── Database (Postgres + pgvector) ────────────────────────────
DATABASE_URL=postgresql://postgres:postgres@localhost:5432/proofoflearn
# ── Redis (queues, cache, rate limits) ────────────────────────
REDIS_URL=redis://localhost:6379
# ── Auth ──────────────────────────────────────────────────────
# Generate with: openssl rand -hex 32
JWT_SECRET=change-this-to-a-random-32-char-string
JWT_EXPIRY=7d
# ── App ───────────────────────────────────────────────────────
NODE_ENV=development
API_PORT=3001
NEXT_PUBLIC_API_URL=http://localhost:3001
NEXT_PUBLIC_APP_URL=http://localhost:3000
# ── LLM (Groq — primary tutor inference) ──────────────────────
# https://console.groq.com — free tier: 14,400 req/day
GROQ_API_KEY=
GROQ_MODEL=llama-3.3-70b-versatile
# ── Embeddings (local — @xenova/transformers) ────────────────
# Sentence embeddings run locally on CPU via ONNX runtime, no API
# key needed. Model: Xenova/all-MiniLM-L6-v2 (384 dims).
# ── Dify (AI workflow engine) ─────────────────────────────────
# https://dify.ai — Education tier is free.
DIFY_API_BASE_URL=https://api.dify.ai/v1
DIFY_API_KEY=app-xxxxxxxxxxxxxxxx
DIFY_TUTOR_WORKFLOW_ID=
DIFY_QUIZ_WORKFLOW_ID=
# ── Razorpay (UPI payouts to students) ────────────────────────
# https://dashboard.razorpay.com — TEST MODE keys only for dev.
RAZORPAY_KEY_ID=
RAZORPAY_KEY_SECRET=
RAZORPAY_WEBHOOK_SECRET=
# When true, the payout service simulates Razorpay calls instead of hitting the real API.
# Useful for local demos when Razorpay account isn't yet provisioned.
PAYOUT_SIMULATION=true
# ── Blockchain (Base Sepolia testnet) ─────────────────────────
# Leaving any of CHAIN_RPC_URL / DEPLOYER_PRIVATE_KEY / ESCROW_CONTRACT_ADDRESS
# unset keeps the chain layer in simulated mode — every flow still works
# end-to-end, but txs are fake. Set all three to flip to live mode and
# actually write to Base Sepolia (visible on basescan.org).
CHAIN_RPC_URL=https://sepolia.base.org
CHAIN_ID=84532
# Generate a fresh demo wallet — never reuse personal keys. Fund it with
# ~0.04 ETH on Base Sepolia (https://www.coinbase.com/faucets/base-ethereum-sepolia-faucet)
# before running apps/contracts/deploy.sh. The same key signs releasePayout
# + mintCredential at demo time, so it stays funded throughout the demo.
DEPLOYER_PRIVATE_KEY=
# Populated automatically by apps/contracts/deploy.sh after a successful run.
ESCROW_CONTRACT_ADDRESS=
CREDENTIAL_CONTRACT_ADDRESS=
# USDC test token on Base Sepolia (Circle faucet asset).
USDC_CONTRACT_ADDRESS=0x036CbD53842c5426634e7929541eC2318f3dCF7e
# Optional — for contract verification.
BASESCAN_API_KEY=
# ── Webhooks ──────────────────────────────────────────────────
# Use ngrok for local dev: `ngrok http 3001`. Paste the HTTPS URL here.
WEBHOOK_BASE_URL=https://your-ngrok-url.ngrok-free.app
WEBHOOK_SECRET=change-this-to-a-random-secret