How to Build Your Own Website with Claude Code, GitHub, Vercel and Supabase
A few years ago, building a website meant learning HTML, CSS, JavaScript, databases and hosting, or paying a developer. Today you describe the website you want in plain English, and an AI coding assistant writes the code. You stay in charge: you decide what the site says, how it looks and when it goes live.
16 min readTime needed: about 2 to 3 hours the first time
The 4 tools and their jobs
- VS Code + Claude CodeYour workshop and your builder. VS Code is a free code editor. Claude Code is an AI assistant inside it that writes the code and makes changes when you ask.
- GitHubA safe online storage box with an undo history. It stores your code and keeps every version.
- VercelThe shop window. It takes your code from GitHub and puts your website on the internet.
- SupabaseYour filing cabinet. A database that saves information from your site, like contact-form messages.
What you'll build
- A modern websiteA home page, about, services and contact sections that look good on phones and computers
- A working contact formThat saves every message in Supabase
- Your code saved safely on GitHub
- A public addressLike my-site.vercel.app, that updates by itself every time you save changes
You can reuse these steps for any site: a portfolio, a landing page, a local business or a client project.
How the pieces fit together
- You describe what you want
- Claude Code (inside VS Code) writes the code on your computer
- You save it to GitHub
- Vercel sees the change and publishes the live website
- Visitors fill in the contact form
- Their messages are saved in Supabase
Before you start
Accounts (create these first):
- ClaudeAt claude.ai. Claude Code needs a paid plan (Pro, Max, Team or Enterprise) or a Claude Console account. The free plan doesn't include Claude Code.
- GitHubAt github.com. Free.
- VercelAt vercel.com. The free Hobby plan is enough for a personal site.
- SupabaseAt supabase.com. The free plan is enough to start.
Software (free, installed in Step 1):
- VS CodeThe code editor
- Node.jsLets your computer run and preview a modern website
- GitSaves versions of your code and sends them to GitHub
Step 1: Install the basic tools
Install VS Code
Go to code.visualstudio.com and click Download for your computer. Open the downloaded file and follow the installer. On Windows, keep the defaults and tick Add "Open with Code" action if you see it. Open VS Code. You can close the Welcome tab.
Install Node.js
Go to nodejs.org. Download the version marked LTS (long-term support, the stable version). Run the installer and keep all the defaults.
Install Git
Windows: download Git for Windows from git-scm.com/downloads/win and install it with the defaults. Claude Code also works better on Windows when Git is installed. Mac: Git is often already installed. If not, the check below will offer to install it.
Check that everything works
VS Code has a built-in terminal: a window where you type commands. Open it from the top menu: Terminal → New Terminal. Type each line and press Enter:
node --versionnpm --versiongit --versionEach one should print a version number, like v22.x.x. If you see "not recognized" or "command not found", close VS Code completely and open it again. Programs installed while VS Code was open only show up after a restart.
Step 2: Set up Claude Code in VS Code
Install the Claude Code extension
In VS Code, open the Extensions view: click the four-squares icon on the left, or press Ctrl+Shift+X (Windows) / Cmd+Shift+X (Mac). Search for Claude Code. Choose the extension published by Anthropic and click Install. If it doesn't appear, restart VS Code.
Create and open your project folder
Create a new empty folder, for example my-website inside Documents. In VS Code: File → Open Folder… and choose it. If VS Code asks "Do you trust the authors of the files in this folder?", click Yes, I trust the authors. It's your own folder.
Everything Claude builds is saved in this folder.
Open Claude Code and sign in
Click the Spark icon (a small star) at the top right of the editor, or click ✻ Claude Code at the bottom right. You can also press Ctrl+Shift+P (Cmd+Shift+P on Mac), type Claude Code and choose Open in New Tab. The first time, click Sign in. Your browser opens. Log in with your Claude account and approve. Back in VS Code you'll see the Claude Code chat with a box at the bottom for your requests.
Understand permission modes
At the bottom of the prompt box you can see the current mode. Click it to change it:
- Plan
- Claude explains what it will do and waits for your approval. Use it at the start of a big task.
- Manual
- Claude asks before every file change and most commands, and shows old vs new side by side. Great for learning.
- Edit automatically / Auto
- Claude makes changes without asking each time. Use it when you trust the task and want speed.
Tip: for your first site, use Plan for the first big request, then Manual so you see what Claude changes. Once you're comfortable, Auto saves a lot of clicking.
Your first test prompt
Hi Claude. I am a complete beginner. Explain in simple words what you can do in this folder, and check that Node.js, npm and Git are installed on my computer.Claude runs a few checks and tells you if anything is missing.
Step 3: Plan your website
Claude does its best work when it knows exactly what you want. Before building, write a short brief.
Write your website brief
A few lines for each:
- Who is the site for?
- Business name, what it does, where it is
- Who are the visitors?
- For example: local homeowners looking for a plumber
- What should visitors do?
- Call, book, send a message or buy
- Pages and sections
- Home, about, services, reviews, contact
- Style
- Colors, mood (modern, friendly, luxury), a website you like
- Content
- Your real text, phone, email, hours and photos
Ask Claude for a plan first
Switch to Plan mode and send something like this (with your own brief):
I want to build a simple, modern website. Here is my brief:
Business: Bright Smile Dental, a family dental clinic in Austin, Texas.
Visitors: local families looking for a friendly dentist.
Goal: visitors should send us a message through a contact form or call us.
Sections: hero with a clear headline and button, about us, services, why choose us, contact form, footer with phone, email and address.
Style: clean, calm, light blue and white, mobile friendly.
Please use Next.js with Tailwind CSS. Do not connect a database yet; just build the form design for now.
Explain your plan in simple words before you start.Read the plan. If something is missing, say so in plain words, like "Add a section for patient reviews" or "Use green instead of blue". When you're happy, approve it.
Step 4: Build the website with Claude Code
Let Claude build
After you approve the plan, Claude creates the project. It may ask to run commands, like installing packages. Click Allow when it matches what Claude said it would do. This takes a few minutes.
Preview the site on your computer
Start the development server so I can preview the website, and tell me which address to open in my browser.Claude runs something like npm run dev. Open the address it gives you, usually http://localhost:3000. This private preview only works on your computer.
Improve the design, one change at a time
Check the site on a computer and a phone-sized window. Short, specific requests work best. Send one at a time:
Make the hero headline bigger and add a short line of text under it.The services section looks crowded on mobile. Show one service per row on small screens.Replace the placeholder text in the About section with this: [paste your text].Add our phone number (512) 555-0100 as a clickable call button in the header.To add your own photos, copy them into the project's public folder (Claude can show you where), then ask: "Use public/team.jpg as the image in the About section."
Ask Claude to check its work
Review the whole website for spelling mistakes, broken links, mobile layout problems and accessibility issues (like missing image descriptions). List what you find, then fix it.Save project notes for Claude (optional but useful)
Claude Code reads a file called CLAUDE.md at the start of every session. Save your brief and rules there, and next time Claude already knows the important details:
Create a CLAUDE.md file for this project with the business details, the style rules (colors, fonts, tone) and the tech choices we made.Step 5: Add a database with Supabase
Right now the form looks good but does nothing. Here you connect it to Supabase so every message is saved.
Create a Supabase project
Go to supabase.com and sign in with Continue with GitHub. Click New project. Give it a name (like my-website), create a strong database password and save it somewhere safe, then choose the region closest to your visitors. Click Create new project and wait a minute or two.
Create the table for contact messages
A table is like a spreadsheet inside the database. Each message is one row. In your Supabase project, open the SQL Editor from the left menu. Create a new query, paste the code below and click Run.
-- Create a table to store contact form messages
create table contact_messages (
id bigint primary key generated always as identity,
created_at timestamptz not null default now(),
name text not null,
email text not null,
message text not null
);
-- Let website visitors ADD a message (but not read others)
grant insert on public.contact_messages to anon;
-- Turn on security rules for this table
alter table contact_messages enable row level security;
-- Rule: anyone can send a message
create policy "visitors can send messages"
on public.contact_messages
for insert to anon
with check (true);In plain words: this creates a contact_messages table with a security rule. Visitors can send a message but can't read anyone else's. Only you can read them, from your Supabase dashboard.
Copy your project keys
In Supabase, click the Connect button at the top of the page. Copy two values: the Project URL and the publishable key (starts with sb_publishable_). Older projects may show an anon key instead. It works the same way.
Connect the form with Claude Code
Back in VS Code:
Connect the contact form to Supabase.
The table is called contact_messages with columns name, email and message.
Use the @supabase/supabase-js package.
Create a .env.local file with NEXT_PUBLIC_SUPABASE_URL and NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, and leave the values empty for me to fill in.
Make sure .env.local is listed in .gitignore so it is never uploaded to GitHub.
Show a friendly success message after sending, and a clear error message if something goes wrong. Also check that the email looks valid before sending.When Claude finishes, open the .env.local file (in the file list on the left) and paste your values after the = signs:
NEXT_PUBLIC_SUPABASE_URL=https://your-project-id.supabase.co
NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY=sb_publishable_xxxxxxxxxxxxSave (Ctrl+S / Cmd+S), then ask Claude to restart the preview so it picks up the new values.
Test it
Open http://localhost:3000, fill in the contact form and send it. In Supabase, open the Table Editor and click contact_messages. Your test message should be there as a new row.
If it doesn't work, copy the error from the page or terminal and paste it into Claude: "The contact form gives this error. Please find and fix the problem."
Step 6: Save your code to GitHub
GitHub keeps your code safe online and is the bridge to Vercel. Every saved version is called a commit. Sending commits to GitHub is called pushing.
Save a version (commit)
Set up Git for this project if it is not set up yet. Double-check that .env.local and node_modules are in .gitignore. Then make the first commit with a clear message.If Git asks for your name and email the first time, use the same email as your GitHub account.
Publish to GitHub
Click the Source Control icon on the left (a branch with three dots), or press Ctrl+Shift+G (Cmd+Shift+G on Mac). Click Publish Branch (or Publish to GitHub). The first time, VS Code asks to sign in to GitHub. Click Allow, approve in your browser and come back. Choose Publish to GitHub private repository. Private means only you see the code. Your website will still be public on Vercel.
On github.com, click your profile picture → Your repositories to see your project.
Step 7: Put your website live with Vercel
Import your project
Go to vercel.com and log in with Continue with GitHub. Click Add New… → Project. If asked, let Vercel access your GitHub repositories (you can choose just this one). Find your project and click Import. Vercel detects that it's a Next.js site. No need to change the build settings.
Add your Supabase keys
Your .env.local isn't on GitHub (good), so Vercel doesn't know your keys yet. Before deploying, open Environment Variables on the same page and add:
- NEXT_PUBLIC_SUPABASE_URL
- Your Supabase Project URL
- NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY
- Your Supabase publishable key
Forgot? In Vercel go to your project → Settings → Environment Variables, add them, then open Deployments and click Redeploy on the latest one.
Deploy
Click Deploy and wait about a minute. On the congratulations screen, click the preview to open your live site. The address looks like my-website.vercel.app. Test the contact form on the live site and check that the message shows up in Supabase.
Your website is now on the internet. Share the link with anyone.
Step 8: Update your website anytime
The everyday workflow, the same every time:
Open your project
Open your project folder in VS Code and open Claude Code.
Ask for the change
Like: "Add a new service called Teeth Whitening with a short description."
Check it in the preview
At localhost:3000.
Save and publish
Ask Claude: "Commit these changes with a clear message and push them to GitHub." (Or use Commit and Sync Changes in Source Control.)
Vercel updates the site
Vercel sees the new commit and updates the live site within a minute or two.
Troubleshooting
"node", "npm" or "git" is not recognized
Restart VS Code (or your computer) after installing. Still failing? Reinstall that tool with the defaults.
The Claude Code panel or Spark icon doesn't appear
Restart VS Code, or press Ctrl+Shift+P and run Developer: Reload Window. Make sure VS Code is up to date (Help → Check for Updates).
Claude asks me to sign in again ("Not logged in")
Click Sign in and finish in your browser. Make sure your Claude plan includes Claude Code.
The contact form says "Something went wrong"
Check the two values in .env.local (no spaces, no quotes), restart the preview, and make sure you ran the SQL in Step 5.2. Paste the exact error into Claude.
The form works on my computer but not on the live site
The keys are missing in Vercel. Add them in Settings → Environment Variables, then redeploy.
Vercel deployment failed
Open the failed deployment, copy the error from the build log and paste it into Claude: "My Vercel build failed with this error. Please fix it." Then commit and push again.
I don't understand what Claude did
Ask: "Explain the change you just made in simple words, as if I am a beginner."
Prompt cheat sheet
Explain how this project is organized and what each main file does, in simple words.Before you change anything, explain your plan step by step and wait for my approval.Add a Reviews section after Services with three customer reviews. Keep the same style.Check every section at phone size and fix anything that looks broken or crowded.Add a good page title, meta description and image alt texts for a dentist in Austin, Texas.I got this error: [paste error]. Find the cause and fix it, then explain what was wrong.Commit all changes with a clear message and push to GitHub."Undo your last change" or "Restore the site to the previous commit."Good habits and safety rules
- Keep secrets secretNever put passwords, the Supabase secret key or bank details in your code or on GitHub.
- Read before you allowWhen Claude asks to run a command or change a file, take a few seconds to read it.
- One change at a timeCheck each one in the preview before asking for the next.
- Commit oftenSmall saved versions make it easy to go back.
- Check the content yourselfYou're responsible for prices, phone numbers, claims and legal information on your site.
- Collect only what you needIn forms, and add a short privacy note if you collect personal details.
Useful links
Want us to do it for you or learn to do it yourself?
Rather have it built for you?
GrowWithU builds conversion-focused business websites, landing pages and online stores, ready to bring you inquiries.
See website buildingLearn it with us, live.
In a private 1-on-1 Zoom lesson we build your website together, step by step, answer your questions and review your project.
Book a Zoom lesson


