-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
61 lines (51 loc) · 3.26 KB
/
Copy path.env.example
File metadata and controls
61 lines (51 loc) · 3.26 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
# Mezon Ta'lim — environment variables.
# Copy to `.env` and fill in. NEVER commit real secrets.
# Non-negotiable: personal data stays in-country. Only Bunny (video) and Resend
# (email) are off-shore services.
# ─── Core ────────────────────────────────────────────────────────────────────
# Postgres (matches docker-compose defaults for local dev).
DATABASE_URL="postgresql://mezon:mezon@localhost:5432/mezon_talim"
# Auth.js v5 — generate with: npx auth secret (or: openssl rand -base64 32)
AUTH_SECRET=""
AUTH_URL="http://localhost:3000"
# Stable Server Actions key (openssl rand -base64 32). Pin this so redeploys
# don't invalidate already-open browser tabs with "Server Action not found"
# (UnrecognizedActionError). Without it, Next.js generates a new key each build.
NEXT_SERVER_ACTIONS_ENCRYPTION_KEY=""
# ─── Storage: MinIO (S3-compatible, self-hosted, in-country) ─────────────────
MINIO_ENDPOINT="localhost"
MINIO_PORT="9000"
MINIO_USE_SSL="false"
MINIO_ACCESS_KEY="mezon"
MINIO_SECRET_KEY="mezon-secret"
MINIO_BUCKET="mezon-certificates"
# ─── Video: Bunny.net Stream (external — non-personal content only) ──────────
BUNNY_STREAM_LIBRARY_ID=""
BUNNY_STREAM_API_KEY=""
BUNNY_STREAM_CDN_HOSTNAME="" # e.g. vz-xxxx.b-cdn.net
BUNNY_TOKEN_AUTH_KEY="" # for signed, view-only playback (no downloads)
# ─── Payments: Click ─────────────────────────────────────────────────────────
# When set, the enroll button becomes "Pay with Click". Register this callback
# (Prepare/Complete) in the Click merchant cabinet: <base>/api/webhooks/click
CLICK_SERVICE_ID=""
CLICK_MERCHANT_ID=""
CLICK_SECRET_KEY=""
# ─── Payments: Payme ─────────────────────────────────────────────────────────
# When set, the enroll button becomes "Pay with Payme". Register the JSON-RPC
# endpoint in the Payme cabinet: <base>/api/webhooks/payme (account field: order_id).
# If neither Click nor Payme is configured, the course page falls back to a
# dev-only free enroll.
PAYME_MERCHANT_ID=""
PAYME_KEY=""
# ─── Email: Resend (external — transactional delivery) ───────────────────────
RESEND_API_KEY=""
RESEND_FROM_EMAIL="Mezon Ta'lim <no-reply@mezontalim.uz>"
# ─── SMS: Eskiz (local, OTP + notifications) ─────────────────────────────────
ESKIZ_EMAIL=""
ESKIZ_PASSWORD=""
ESKIZ_FROM="4546"
# ─── Feature flags ───────────────────────────────────────────────────────────
# Phone-OTP login. Leave "false" until Eskiz onboarding is done (registered
# sender name + approved OTP template). Email+password works regardless.
# In dev with this off, the OTP code is logged to the server console.
OTP_LOGIN_ENABLED="false"