Materials · Setup

Get Ready to Deploy

One pasted command takes a stock laptop — no git, no Node, nothing — to a working Claude Code + Node + pnpm + Vercel dev stack. It pulls every tool from its official source, verifies each download, and prints a version check at the end. Safe to re-run if a step fails.

New to all this? You’re in exactly the right place. “Deploy” just means putting your app live on the internet so anyone can visit it. You don’t need to understand every tool yet — paste one command, follow the steps in order, and we’ll explain each piece as it comes up. Nothing here can hurt your computer, and every step is safe to re-run if it hiccups.

A few words you’ll see: Terminal / PowerShell are the apps where you type commands instead of clicking. CLI means “command-line tool” — a program you run by typing its name. That’s the whole vocabulary you need to start.

The tools below aren’t random — they’re one pipeline. Here’s the path your code takes from your laptop to live on the internet.

Your laptop
Claude Code Next.js · React · Node
git push
GitHub
main branch
webhook
Vercel
builds & hosts
serves
Live site
https://your-app.app
reads its keys, then calls
Supabase
SQL Database · Auth
NEXT_PUBLIC_SUPABASE_URL
NEXT_PUBLIC_SUPABASE_ANON_KEY
SUPABASE_SERVICE_ROLE_KEY
Resend
transactional email
RESEND_API_KEY
NEXT_PUBLIC_* — shipped to the browser (safe to expose)server-only — secret, never sent to the browser

These four lines live in .env.local on your laptop, and in your Vercel project’s Environment Variables in production.

Before you paste anything

Never run a script you haven’t read

A curl … | bash line runs whatever lives at that URL on your machine, with your permissions. Don’t take ours — or anyone’s — on faith. The fastest way to check it: open Claude Desktop, paste the script’s URL, and ask Claude to read it back to you and flag anything unsafe.

Paste this into Claude Desktop:

Review this install script and flag anything unsafe before I run it:
https://aimhuge.com/setup/mac.sh
(Windows: https://aimhuge.com/setup/windows.ps1)

Prefer to read it yourself? Open the raw script: mac.sh · windows.ps1. This habit isn’t just for us — do it with every install script you’re ever handed.

macOS

Open Terminal (Cmd-Space → “Terminal” → Enter) and paste:

bash <(curl -fsSL https://aimhuge.com/setup/mac.sh)

We use bash <(curl …) rather than curl … | bash so Homebrew’s password prompt can still read your keyboard.

Windows 11

Open PowerShell (Start → “PowerShell” → Enter — the prompt starts with PS) and paste:

irm https://aimhuge.com/setup/windows.ps1 | iex

If you’re in the old Command Prompt (no PS), open PowerShell instead — this command is PowerShell-only.

What the script installs

ToolmacOSWindowsWhy
GitXcode CLTwingetVersion control — and what un-bricks the “can’t clone” problem.
Homebrew— (uses winget)Package manager.
Node.js (LTS)Runs the JS/TS stack.
pnpmThis repo’s package manager.
Vercel CLIDeploys.
Supabase CLIbrewGitHub + checksumMigrations + type-gen against your hosted Supabase project (SQL Database + Auth). No Docker.
Claude CodenpmnpmThe AI dev environment — installed from npm, integrity-verified.
Resend— (npm + key)— (npm + key)Email API — nothing to install; it's an npm package plus a RESEND_API_KEY.
DictationSuperwhisperWispr Flow / Win+HHands-free prompting.

Prefer to read them first? Grab the raw scripts: mac.sh · windows.ps1

Get your keys into .env.local

The script installs the tools; these keys connect your app to the services it talks to. Create a few free accounts, copy one value from each, and paste them into a file called .env.local in your project root. It’s gitignored — it never gets committed.

What’s an environment variable?

A named value your app reads at runtime instead of hard-coding it — usually a secret like an API key, written one per line as NAME=value. Keeping them in .env.local (rather than in your code) means the secrets never get committed to GitHub, and you can point at different values locally vs. in production — env is just short for “environment.”

Start from the example file:

cp .env.example .env.local
  1. 1
    GitHub — hosts your code and is how you sign into Vercel and Supabase. You already have this if you cloned the repo. For in-app “Sign in with GitHub”, create an OAuth app (Settings → Developer settings → OAuth Apps) and paste its Client ID + Secret into Supabase → Authentication → Providers — those live in Supabase, not .env.local.
  2. 2
    Vercel — sign up with your GitHub account, then authenticate the CLI with vercel login (same as claude and supabase login). There’s no Vercel key in .env.local — but when you deploy, add the four keys below under Project → Settings → Environment Variables.
  3. 3
    Supabase — create a project, then open Project Settings → API and copy three values:
    • NEXT_PUBLIC_SUPABASE_URL ← “Project URL”
    • NEXT_PUBLIC_SUPABASE_ANON_KEY ← the “anon / public” key
    • SUPABASE_SERVICE_ROLE_KEY ← the “service_role” key (secret — server only)
  4. 4
    Resend — sign up, go to API Keys → Create API Key, and copy it once (it’s only shown one time) into RESEND_API_KEY.
  5. 5
    Spaceship only if you still need a domain. Cheap domains, and it has a DNS API so you (or Claude) can automate the records. Buy the domain, then in the API Manager create a key → SPACESHIP_API_KEY + SPACESHIP_API_SECRET. Then point its nameservers at Vercel and add Resend’s DNS records.

Your finished .env.local looks like this:

# Supabase -> Project Settings -> API
NEXT_PUBLIC_SUPABASE_URL=https://YOUR-PROJECT.supabase.co
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJhbGci...          # "anon / public" key
SUPABASE_SERVICE_ROLE_KEY=eyJhbGci...              # "service_role" - server only, keep secret

# Resend -> API Keys
RESEND_API_KEY=re_xxxxxxxxxxxxxxxx

# Spaceship (optional) - only if you bought your domain there + want DNS automation
SPACESHIP_API_KEY=xxxxxxxxxxxxxxxx
SPACESHIP_API_SECRET=xxxxxxxxxxxxxxxx

Restart pnpm dev after editing so it picks up the new values. Never commit .env.local — and in production, set the same keys in Vercel’s Environment Variables.

If something breaks

Open a fresh terminal so all PATH changes load, then run:

claude doctor

It checks the install and PATH and tells you exactly what’s wrong. If claude still isn’t on your PATH, reinstall it straight from npm:

npm install -g @anthropic-ai/claude-code

Want this rolled out to your team?

The AimHuge workshops cover Claude Code setup, skills, and workflows end to end — your whole team on the same stack in an afternoon.

Book a 30-minute call