Documentation

Guides and references

Libraries

Config

lib/config — env, validate-env, constants, auth-layouts, site-url.

Overview

lib/config/ holds app configuration and validation.

Environment Variables

lib/config/env.ts:

  • Uses Zod to validate env vars at startup
  • Validates Supabase keys (publishable vs secret)
  • Required: NEXT_PUBLIC_SUPABASE_URL, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, SUPABASE_SECRET_KEY, STRIPE_*, RESEND_TOKEN, etc.
  • Optional: INDEXNOW_KEY, GOOGLE_VERIFICATION_CODE, etc.

lib/config/validate-env.ts — Call at app startup to fail fast if env is invalid.

Constants

lib/config/constants.ts:

  • Plan limits (e.g. PLAN_TEAM_MEMBER_LIMITS)
  • Pricing display
  • MAX_TEAM_MEMBERS, INVITATION_EXPIRY_DAYS
  • Feature flags or app-wide constants

Auth Layouts

lib/config/auth-layouts.ts:

  • AUTH_LAYOUT_VARIANTcentered | split | minimal
  • Maps variant to layout components
  • See Auth Layouts

Site URL

lib/config/site-url.ts:

  • getPublicSiteUrl() — Full URL object
  • getPublicSiteOrigin() — Origin string
  • withPublicSiteOrigin(path) — Absolute URL for a path
  • Uses NEXT_PUBLIC_APP_URL or Vercel URL

Security

Never expose secret keys to the client. Use NEXT_PUBLIC_* only for publishable keys. Validate env in server code before use.