Overview

Deploy aSaaSin with Vercel for hosting and TinaCMS Cloud for visual editing. Both connect to your GitHub repository:

  • Push to GitHub
  • Vercel builds and hosts
  • TinaCMS connects to the same repo for content editing.

Prerequisites

  • GitHub account with your aSaaSin repo
  • Vercel account linked to GitHub
  • TinaCMS Cloud account linked to GitHub

Environment variables

Update your local .env.local and mirror the same keys in Vercel → Project → Settings → Environment Variables.

# General
NEXT_PUBLIC_APP_URL=https://your-domain.com

# Google Analytics
NEXT_PUBLIC_GA_ID=

# Supabase
NEXT_PUBLIC_SUPABASE_URL=
NEXT_PUBLIC_SUPABASE_ANON_KEY=
SUPABASE_SERVICE_ROLE_KEY=

# Tina CMS
NEXT_PUBLIC_TINA_CLIENT_ID=
TINA_TOKEN=
TINA_SEARCH_TOKEN=

# Resend
RESEND_API_KEY=
RESEND_AUDIENCE_ID=
RESEND_NOTIFICATION_EMAIL=

# Polar (payments)
POLAR_API_KEY=
POLAR_WEBHOOK_SECRET=
POLAR_SUCCESS_URL=https://your-domain.com/success?checkout_id={CHECKOUT_ID}

# OpenAI (optional)
OPENAI_API_KEY=

Remote images

Allow Tina media and your Supabase project domain in next.config.ts.

// next.config.ts
export default {
  images: {
    remotePatterns: [
      { protocol: 'https', hostname: 'assets.tina.io' },
      // Replace with your Supabase project host (example below):
      { protocol: 'https', hostname: 'zmcmsnzibonitdynggga.supabase.co' },
    ],
  },
}

To find your exact Supabase host, copy it from NEXT_PUBLIC_SUPABASE_URL (e.g. https://<project>.supabase.co) or from your Supabase Project → Settings → API page.