You built it โ now ship it
In Part 1 you got an app running on your machine. This part is the second foundation: the platforms that put it online, and the AWS services that do the same jobs. The backend parts (3โ5) just say "now deploy it" โ because the how lives here. Read it once; the others link back.
Everything below is something you can hand to Claude Code โ "deploy this to Vercel," "provision a Supabase project," "put it behind CloudFront." This article is so you know what to ask for.
Every web app needs two things
A place to serve the frontend
Takes your built site and delivers it to browsers over HTTPS, fast, worldwide. "Hosting" / "deploy".
A backend
Stores data, signs users in, runs logic the browser can't be trusted with. Your API + database.
Vercel answers the first. Supabase answers the second. AWS does both โ more pieces, more control.
Vercel โ your deploy platform
Vercel hosts frontends (from the team behind Next.js). Connect a GitHub repo; every push builds and deploys, with a preview URL per branch and a global CDN.
npm i -g vercel
vercel # preview deploy
vercel --prod # production deploy
Why people reach for it: zero-config for Next.js, instant preview links, git-push deploys. Live in minutes.
Supabase โ your backend platform
Supabase wraps a managed Postgres database with the services an app needs, so the database itself becomes your backend โ no server to run.
Postgres + auto APIs
A real SQL database, reachable via REST, GraphQL, and RPC.
Auth
Email, magic links, and social sign-in, tied to the database.
Realtime
Subscribe to row changes over WebSockets โ live updates in one line.
Row Level Security
Rules enforced per row, so it's safe to talk to from the browser.
The key idea: the database is your API (RPC)
With Supabase you often don't write API endpoints at all. You put logic in a Postgres function and call it by name โ an RPC. The function is the endpoint:
// no URL, no route file โ just call the function by name
const { data, error } = await supabase.rpc('submit_answer', {
game_id: gameId, player_id: playerId, option_id: optionId,
});
Mark it SECURITY DEFINER and it runs trusted, server-side; pair with Row Level Security and the database can safely be your entire backend.
The AWS alternatives
AWS hands you individual services you assemble. Every job Vercel and Supabase do has an AWS counterpart:
| Job | Vercel / Supabase | AWS equivalent |
|---|---|---|
| Host the frontend | Vercel | S3 + CloudFront, or AWS Amplify Hosting |
| Run backend code | Vercel Functions / Supabase RPC | Lambda + API Gateway, or containers on ECS Fargate |
| Database | Supabase Postgres | RDS / Aurora (SQL) or DynamoDB (NoSQL) |
| Auth | Supabase Auth | Cognito |
| Realtime | Supabase Realtime | API Gateway WebSockets, or AppSync |
| File storage | Supabase Storage | S3 |
| Deploy on push | Built in | Amplify, or GitHub Actions + SAM/CDK/Terraform |
Quickest AWS deploy: build to static files, aws s3 sync to a bucket, put CloudFront in front. Or use Amplify Hosting for Vercel-like git-push deploys on AWS.
Which should you choose?
| If youโฆ | Lean toward |
|---|---|
| Want to ship fast with a small team | Vercel + Supabase |
| Are already on AWS / have compliance needs | All-AWS |
| Want the shortest path to "it works" | Vercel + Supabase |
Capture your deploy setup in CLAUDE.md
Write your platform choices where Claude Code sees them every session โ so "deploy this" just works:
# CLAUDE.md
## Deploy
- Frontend: Vercel, auto-deploys on push to main; preview on every PR.
- Manual: vercel (preview) / vercel --prod (production).
- Data: Supabase project ref abcd โ migrations in supabase/.
## Environments & secrets
- Local env in .env.local (gitignored). Never commit keys.
- anon key = public/client-safe; service-role key = server-only.
- Mirror NEXT_PUBLIC_* vars in Vercel โ Settings โ Environment Variables.
## AWS alternative
- Host: aws s3 sync ./out s3://<bucket> + CloudFront invalidation, or Amplify.
## Rule
- Every deploy comes from git โ no manual uploads.
How Claude Code helps
Ask for the platform Skills by name and let Claude Code run the deploy commands:
vercel
Deploy, env vars, domains, CLI workflows.
supabase
Database, Auth, Realtime, RLS, migrations.
aws-serverless / aws-amplify
Lambda, API Gateway, SAM, Amplify hosting.
"Which should I use?"
Describe your app + constraints; let Claude Code recommend a stack.
Next up โ add a backend, your choice of three: Part 4 ยท Node.js API (in your Next.js app), Part 5 ยท Python API (AWS Lambda + SAM), or Part 6 ยท Docker + ECS Fargate (a containerized service). Same app โ pick the stack.