# ============================================================================= # Waggle www — env template # ============================================================================= # Copy to `.env.local` and fill in real values. `.env.local` is gitignored. # All NEXT_PUBLIC_* vars are exposed to the client bundle; never put secrets # behind that prefix. # ============================================================================= # ----------------------------------------------------------------------------- # Clerk auth # ----------------------------------------------------------------------------- # Publishable key from Clerk dashboard → API Keys. Starts with `pk_test_` (dev) # or `pk_live_` (prod). NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY=pk_test_xxxxx # Secret key from Clerk dashboard → API Keys. Starts with `sk_test_` (dev) # or `sk_live_` (prod). Never expose to client. CLERK_SECRET_KEY=sk_test_xxxxx # Hosted-flow redirect targets. `/` falls back to landing for sign-in/up # completion; route-level redirects can override per request. NEXT_PUBLIC_CLERK_SIGN_IN_URL=/sign-in NEXT_PUBLIC_CLERK_SIGN_UP_URL=/sign-up NEXT_PUBLIC_CLERK_SIGN_IN_FALLBACK_REDIRECT_URL=/ NEXT_PUBLIC_CLERK_SIGN_UP_FALLBACK_REDIRECT_URL=/ # Clerk webhook signing secret. Get from Clerk dashboard → Webhooks → endpoint. # Starts with `whsec_`. Used by svix to verify `user.created` etc. CLERK_WEBHOOK_SECRET=whsec_xxxxx # ----------------------------------------------------------------------------- # Stripe (Connected linkage — Stripe Customer ID stored in Clerk publicMetadata) # ----------------------------------------------------------------------------- # Secret key from Stripe dashboard → Developers → API keys. STRIPE_SECRET_KEY=sk_test_xxxxx # Webhook signing secret from Stripe dashboard → Webhooks → endpoint. STRIPE_WEBHOOK_SECRET=whsec_xxxxx # Stripe price IDs (tier × billing cycle). Provision via Stripe CLI: # stripe prices create --product= --unit-amount= \ # --currency=usd --recurring.interval=month|year \ # --lookup-key=_ -d "metadata[tier]=" \ # -d "metadata[billing]=" # Code resolves IDs by lookup_key at runtime; env vars are explicit pinning. # LEGACY: Pro is no longer a sold tier (new checkout is Team-only). These # vars are retained only so legacy Pro subscription webhooks keep resolving. STRIPE_PRICE_PRO_MONTHLY=price_xxxxx STRIPE_PRICE_PRO_ANNUAL=price_xxxxx STRIPE_PRICE_TEAMS_MONTHLY=price_xxxxx STRIPE_PRICE_TEAMS_ANNUAL=price_xxxxx