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.