Skip to main content

Configuring Credentials

After logging in as admin, open /admin/settings. This page holds every tenant credential. All values are encrypted with ENCRYPTION_KEY before being written to the app_settings table — they never appear in .env, server logs, or backup files in plain text.

Stripe

Required for paid courses. Free courses work without it.

FieldWhere to find it
Secret keyStripe dashboard → Developers → API keys → Secret key (sk_live_... or sk_test_...).
Webhook signing secretStripe dashboard → Developers → Webhooks → add endpoint https://learn.client.com/api/webhooks/stripe, subscribe to checkout.session.completed, then copy the signing secret (whsec_...).
Publishable keyOptional. Only needed if you customize the Checkout flow.

After saving, run a 1-cent test purchase end-to-end to confirm the webhook fires and the enrollment lands.

Bunny Stream

Required for video lessons.

FieldWhere to find it
API keyBunny dashboard → Account → API.
Library IDBunny dashboard → Stream → your library → numeric ID in the URL.
CDN hostnameThe *.b-cdn.net hostname assigned to the library's pull zone.
Embed token keyStream library → Security → Token Authentication Key. Required to sign embed URLs.

Test by uploading a 30-second clip in /admin/courses/{id}/lessons. Upload progress comes from the browser direct to Bunny — if it stalls at 0%, the API key is wrong; if it uploads but playback fails, the embed token key is wrong.

SMTP (transactional email)

Used for enrollment confirmations and password resets. Any provider that speaks SMTP works.

FieldNotes
Hoste.g. smtp.resend.com, email-smtp.eu-west-1.amazonaws.com.
Port465 (TLS) or 587 (STARTTLS).
UsernameProvider-specific. For Resend it's the literal string resend.
PasswordAPI key or SMTP password.
From emailMust be a domain you verified with the provider.

Use the Send test email button on the settings page before publishing courses.

Google OAuth (optional)

Only if the client wants "Sign in with Google".

  1. Google Cloud Console → APIs & Services → Credentials → Create credentials → OAuth client ID → Web application.
  2. Authorised redirect URI: https://learn.client.com/api/auth/callback/google.
  3. Paste the client ID + secret into /admin/settings.
  4. Toggle Enable Google login.

Raw HTML in the page builder (optional)

Disabled by default — once on, any admin can paste arbitrary HTML (including <script>) into Puck blocks. Leave off unless the client explicitly needs it for tracking pixels or third-party embeds.