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.
NEXT_PUBLIC_* — shipped to the browser (safe to expose)server-only — secret, never sent to the browserThese 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 | iexIf you’re in the old Command Prompt (no PS), open PowerShell instead — this command is PowerShell-only.
What the script installs
| Tool | macOS | Windows | Why |
|---|---|---|---|
| Git | Xcode CLT | winget | Version control — and what un-bricks the “can’t clone” problem. |
| Homebrew | ✓ | — (uses winget) | Package manager. |
| Node.js (LTS) | ✓ | ✓ | Runs the JS/TS stack. |
| pnpm | ✓ | ✓ | This repo’s package manager. |
| Vercel CLI | ✓ | ✓ | Deploys. |
| Supabase CLI | brew | GitHub + checksum | Migrations + type-gen against your hosted Supabase project (SQL Database + Auth). No Docker. |
| Claude Code | npm | npm | The 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. |
| Dictation | Superwhisper | Wispr Flow / Win+H | Hands-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- 1GitHub — 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. - 2Vercel — sign up with your GitHub account, then authenticate the CLI with
vercel login(same asclaudeandsupabase login). There’s no Vercel key in.env.local— but when you deploy, add the four keys below under Project → Settings → Environment Variables. - 3Supabase — 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” keySUPABASE_SERVICE_ROLE_KEY← the “service_role” key (secret — server only)
- 4Resend — sign up, go to API Keys → Create API Key, and copy it once (it’s only shown one time) into
RESEND_API_KEY. - 5Spaceship — 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=xxxxxxxxxxxxxxxxRestart 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 doctorIt 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-codeWant 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