-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
57 lines (48 loc) · 2.48 KB
/
Copy path.env.example
File metadata and controls
57 lines (48 loc) · 2.48 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
# ===========================================================
# Luck Lab — Environment Variables
# Copy to .env.local for local dev.
# Set all of these in Vercel → Project Settings → Environment.
# ===========================================================
# --- App ---
NEXT_PUBLIC_APP_URL=http://localhost:3000
# --- AI (Tyche's brain — Claude preferred, OpenAI fallback) ---
# If ANTHROPIC_API_KEY is set, the €29 Reading uses Claude (best quality).
# If only OPENAI_API_KEY is set, it uses OpenAI gpt-4o-mini.
# Both can be set — Claude is tried first, OpenAI is the fallback.
ANTHROPIC_API_KEY=sk-ant-…
# Optional: override model (default: claude-sonnet-4-5-20241022)
# CLAUDE_MODEL=claude-sonnet-4-5-20241022
OPENAI_API_KEY=sk-proj-…
# Optional: override model (default: gpt-4o-mini)
# OPENAI_MODEL=gpt-4o
# --- Stripe (checkout + abandoned-cart recovery) ---
STRIPE_SECRET_KEY=sk_test_…
# Required for the webhook (abandoned checkout recovery).
# From Stripe Dashboard → Developers → Webhooks → add /api/stripe/webhook
# and select event: checkout.session.expired
STRIPE_WEBHOOK_SECRET=whsec_…
# --- Resend (email: drip funnel, PDF delivery, recovery) ---
RESEND_API_KEY=re_…
EMAIL_FROM="Tyche · Luck Lab <tyche@lucklab.app>"
# Optional: Resend Audiences contact sync (for open/click tracking + unsubscribes)
RESEND_AUDIENCE_ID=aud_…
# --- Analytics (optional — Plausible) ---
# Set to your Plausible domain (e.g. "lucklab.app") to enable the tracking script.
# No cookies, GDPR-compliant, no config needed beyond this.
# NEXT_PUBLIC_PLAUSIBLE_DOMAIN=lucklab.app
# --- Cron (required in production) ---
# Any long random string. Vercel Cron sends this as `Authorization: Bearer ${CRON_SECRET}`.
# Used to authenticate /api/cron/* routes.
CRON_SECRET=change-me-to-a-long-random-string
# --- Admin (for monthly stats email) ---
ADMIN_EMAIL=mikel@yourdomain.com
# --- Social drafts webhook (optional — Slack/Discord) ---
# When the weekly-social cron runs, it posts draft copy to this webhook.
# You review and post manually to X/LinkedIn — safer than auto-posting.
# SOCIAL_DRAFTS_WEBHOOK=https://hooks.slack.com/services/...
# --- Supabase (persistence — optional, for Journal/Return/Gift features) ---
# When these are set, the app can persist readings and host the Synchronicity Journal.
# Without them the MVP runs fine — Stripe metadata serves as the DB.
# NEXT_PUBLIC_SUPABASE_URL=https://xxxx.supabase.co
# NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ…
# SUPABASE_SERVICE_ROLE_KEY=eyJ…