Skip to main content
Use this after Quick Start or a production deploy.

Infrastructure

  • Fresh Supabase project created
  • All supabase/migrations/*.sql applied in numeric order
  • TENANT_SECRETS_MASTER_KEY and STREAMLY_CRON_SECRET generated
  • Env configured (.env.local, host secrets, or Wrangler secrets)
  • App reachable on your public URL
  • Cloudflare buyers: own KV ids + routes personalized; ENABLE_DEMO off

Operator access (production)

  • ENVATO_PERSONAL_TOKEN set
  • RESEND_API_KEY + STREAMLY_FROM_EMAIL set (required for magic-link login)
  • Open /admin/login, activate with purchase code, complete email verify if prompted (/verify-email)
  • Complete /admin/onboarding if shown
  • Confirm Overview loads at /admin/overview
  • Demo flags (ENABLE_DEMO / ADMIN_ALLOW_DEMO_LICENSE) disabled on real installs

Branding & themes

  • Open /admin/themes and Apply a built-in theme
  • Optionally preview with /?__theme_preview=<themeId> (operator session)
  • Customize logos, colors, fonts, SEO in /admin/landing-page
  • Confirm storefront chrome matches the active theme (data-storefront-theme)

Catalog & playback

  • Add or import at least one movie/show in /admin/catalog
  • Attach a content source (URL/HLS/embed or managed + Addons)
  • Optional: pnpm run sync:tmdb for bulk metadata hydrate
  • Verify /title/[slug] and watch routes as a viewer

Billing (optional)

  • Install Stripe in /admin/plugins (publishableKey, secretKey, webhookSecret)
  • Configure plans in /admin/plans
  • Set webhook to /api/webhooks/stripe (+ Connect secret if used)

Go-live

  • Set production NEXT_PUBLIC_APP_URL / PLATFORM_HOST / API base
  • Configure custom domain (Domain)
  • Schedule jobs (Cloudflare cron or Node POST /api/internal/jobs/run)
  • Review legal pages (Legal & Marketing)
  • Check /admin/inbox for contact-form messages after go-live