Vercel
Git push to deploy. No server to maintain, and no add-ons needed.
Vercel builds and hosts the site for you. Push your code, it deploys. HTTPS, a CDN and a domain are included.
Commercial use and the Hobby plan. Vercel's Hobby plan is for non-commercial projects. A store that takes money is commercial, so you should be on the Pro plan. Check Vercel's current terms before relying on the free tier for a real shop.
1. Seed Supabase, once
From your own computer, with DATABASE_URI pointed at your Supabase project:
bun run seedSkip this if you already did it in Install and seed.
Do not set NODE_ENV=production when you run it — the tables are only created
outside production mode.
2. Push the code to GitHub
Create a private repository
On github.com/new, make a private repository. Private matters — the theme is licensed to you, not to the public.
Push
git init
git add .
git commit -m "Initial commit"
git branch -M main
git remote add origin https://github.com/YOUR_USERNAME/YOUR_REPO.git
git push -u origin mainCheck that .env.local is not in the commit. It is listed in .gitignore, so it
should be excluded automatically. Confirm with git status before pushing — if you
see .env.local, stop and fix .gitignore first.
3. Import the project
At vercel.com/new, connect your GitHub account and import the repository. Vercel detects Next.js automatically — leave the framework and build settings alone.
4. Add the environment variables
Before clicking Deploy, expand Environment Variables and add all of these:
| Name | Value |
|---|---|
TEBEX_TOKEN | Your Headless store token |
SERVER_SECRET | Your game server secret |
PAYLOAD_SECRET | 64 random hex characters |
NEXT_PUBLIC_SITE_URL | Your final domain, e.g. https://store.example.com |
DATABASE_URI | Supabase Session pooler string |
SUPABASE_URL | https://yourref.supabase.co |
SUPABASE_SERVICE_ROLE_KEY | Your service_role key |
Apply them to all environments (Production, Preview, Development).
These must be present for the first build, not added afterwards. The build loads
the admin panel configuration, and it bakes SUPABASE_URL into the image loader and
the Content-Security-Policy. A build without them either fails outright or deploys a
site where uploaded images are silently blocked.
5. Deploy
Deploy
Click Deploy and wait two to four minutes.
Add your domain
Settings → Domains → add your domain and create the DNS records Vercel shows you. HTTPS is issued automatically within a few minutes.
Fix NEXT_PUBLIC_SITE_URL if needed
If you guessed the domain earlier, correct it under Settings → Environment Variables, then Deployments → ⋯ → Redeploy. Environment changes only take effect on a new deployment.
Log in and secure the admin panel
Open https://yourdomain.com/admin, sign in, and change the seeded password
immediately.
Everyday operations
Deploying an update is git push. Vercel builds and swaps it in automatically.
Redeploys are safe: every deploy starts from a clean filesystem, and your content and uploads sit in Supabase untouched.