-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path.env.example
More file actions
68 lines (59 loc) · 3.25 KB
/
Copy path.env.example
File metadata and controls
68 lines (59 loc) · 3.25 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
# Supabase Connection Variables
# DATABASE_URL uses the connection pooler (port 6543)
DATABASE_URL="postgresql://postgres.[project-ref]:[password]@aws-0-[region].pooler.supabase.com:6543/postgres?pgbouncer=true"
# DIRECT_URL uses the direct connection (port 5432)
DIRECT_URL="postgresql://postgres.[project-ref]:[password]@aws-0-[region].pooler.supabase.com:5432/postgres"
# Supabase Client Variables
NEXT_PUBLIC_SUPABASE_URL="https://[project-ref].supabase.co"
NEXT_PUBLIC_SUPABASE_ANON_KEY="your-anon-key"
# Server-only: signed download URLs, product file listing, admin storage deletes
# Dashboard: Project Settings > API > service_role (never expose to the client)
SUPABASE_SERVICE_ROLE_KEY="your-service-role-key"
# Upstash Redis Variables
UPSTASH_REDIS_REST_URL="https://[project-url].upstash.io"
UPSTASH_REDIS_REST_TOKEN="your-upstash-token"
# Security & Authentication Secrets
JWT_SECRET="your-32-character-long-secret-key-for-jwt"
HEALTH_CHECK_SECRET="your-secure-health-check-secret"
# Next.js URLs
NEXT_PUBLIC_SITE_URL="http://localhost:3000"
# Resend (email notifications)
RESEND_API_KEY="re_xxxxxxxx"
RESEND_FROM_EMAIL="notifications@yourdomain.com"
RESEND_NOTIFY_TO="hello@yourdomain.com"
# Stripe (sandbox / test mode)
# Dashboard: https://dashboard.stripe.com/test/apikeys
STRIPE_SECRET_KEY="sk_test_xxxxxxxx"
# Publishable key is required only for the embedded checkout flow (/store/checkout)
NEXT_PUBLIC_STRIPE_PUBLISHABLE_KEY="pk_test_xxxxxxxx"
# Single secret, or comma-separated STRIPE_WEBHOOK_SECRETS for rotation windows
STRIPE_WEBHOOK_SECRET="whsec_xxxxxxxx"
# STRIPE_WEBHOOK_SECRETS="whsec_new,whsec_old"
# Local webhooks: stripe listen --forward-to localhost:3000/api/webhooks/stripe
# Webhook events to subscribe (Dashboard > Developers > Webhooks):
# checkout.session.completed, checkout.session.async_payment_succeeded,
# checkout.session.async_payment_failed, payment_intent.succeeded,
# payment_intent.payment_failed, payment_intent.processing,
# charge.refunded, charge.dispute.created, charge.dispute.closed
# Lemon Squeezy (Test mode in dashboard toggle)
# Select in Admin → Settings → Payments, or set PAYMENT_PROVIDER=lemonsqueezy as fallback
# Dashboard: https://app.lemonsqueezy.com/settings/api
LEMONSQUEEZY_API_KEY=""
LEMONSQUEEZY_STORE_ID=""
LEMONSQUEEZY_WEBHOOK_SECRET=""
# Map each Product.lemonSqueezyVariantId to an LS variant id in the dashboard.
# Local webhooks: enable Test mode, run `ngrok http 3000`, register
# https://<tunnel>/api/webhooks/lemonsqueezy in Settings > Webhooks.
# Test card: 4242 4242 4242 4242
# Vercel: set PAYMENT_PROVIDER + LEMONSQUEEZY_* per environment (Preview/Production).
# Cloudflare Turnstile (optional bot protection on checkout). If unset, checkout
# works without a challenge. Get keys: https://dash.cloudflare.com/?to=/:account/turnstile
#
# Local dev: use Cloudflare TEST keys (work on localhost without hostname config).
# Do NOT mix test sitekey with production secret (or vice versa).
# NEXT_PUBLIC_TURNSTILE_SITE_KEY=1x00000000000000000000AA
# TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA
# Open the app at http://localhost:3000 — not 127.0.0.1 (error 110200).
# Production (Vercel): use real keys from the dashboard + devixid.vercel.app hostname.
TURNSTILE_SECRET_KEY=""
NEXT_PUBLIC_TURNSTILE_SITE_KEY=""