Repository navigation
Expand file tree
/
Copy path.env.example
More file actions
66 lines (53 loc) · 3.35 KB
/
Copy path.env.example
File metadata and controls
66 lines (53 loc) · 3.35 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
# Copy to .env.local. Never commit real values. Every variable is validated in config/env.ts at boot.
# Free-tier sign-up notes are in docs/TECH_STACK.md.
#
# Sections are grouped by when they become required. A variable is added to config/env.ts by the
# PR that introduces the service, never earlier — so an unused key here is documentation only.
# ══════════════════════════════════════════════════════════════════════════════
# REQUIRED NOW (config/env.ts validates these)
# ══════════════════════════════════════════════════════════════════════════════
# ── Firebase Admin (server; service account; Spark plan) ──────────────────────
FIREBASE_PROJECT_ID=
FIREBASE_CLIENT_EMAIL=
# Single line, keep the \n escapes exactly as exported from the JSON key.
FIREBASE_PRIVATE_KEY=
# ── Firebase web config (client; public by design, governed by rules + Auth domains)
NEXT_PUBLIC_FIREBASE_API_KEY=
NEXT_PUBLIC_FIREBASE_AUTH_DOMAIN=
NEXT_PUBLIC_FIREBASE_PROJECT_ID=
NEXT_PUBLIC_FIREBASE_APP_ID=
# ── LLM: Google AI Studio (free tier) ─────────────────────────────────────────
GEMINI_API_KEY=
# ── Vapi (legacy voice pipeline; removed in P4.6 — RISKS R12) ────────────────
NEXT_PUBLIC_VAPI_WEB_TOKEN=
NEXT_PUBLIC_VAPI_WORKFLOW_ID=
# ── App ────────────────────────────────────────────────────────────────────────
NEXT_PUBLIC_APP_URL=http://localhost:3000
# Set to 1 only in CI build steps that have no secrets.
SKIP_ENV_VALIDATION=
# ══════════════════════════════════════════════════════════════════════════════
# ADDED IN LATER PHASES (documented ahead; not yet read by config/env.ts)
# ══════════════════════════════════════════════════════════════════════════════
# P1.5 Rate limiting / quotas — Upstash Redis free tier
UPSTASH_REDIS_REST_URL=
UPSTASH_REDIS_REST_TOKEN=
# P1.6 Observability — Sentry developer tier, PostHog free tier
SENTRY_DSN=
NEXT_PUBLIC_SENTRY_DSN=
NEXT_PUBLIC_POSTHOG_KEY=
NEXT_PUBLIC_POSTHOG_HOST=https://us.i.posthog.com
# P2.3 LLM fallback — Groq free tier; Ollama for local dev (optional)
GROQ_API_KEY=
OLLAMA_BASE_URL=http://localhost:11434
# P2.6 Object storage — Cloudflare R2 (S3-compatible) or Supabase Storage (ADR-0004)
STORAGE_PROVIDER=r2
R2_ACCOUNT_ID=
R2_ACCESS_KEY_ID=
R2_SECRET_ACCESS_KEY=
R2_BUCKET=
NEXT_PUBLIC_STORAGE_PUBLIC_URL=
# P3.4 Email — Resend free tier
RESEND_API_KEY=
EMAIL_FROM=JustPrep <no-reply@your-domain>
# P5.7 Signed cron — random 32+ bytes; used by GitHub Actions → /api/cron/*
CRON_SECRET=