<!--
ROBOTS ON PAYROLL / THE VAULT
What this is: the go-live guide, from "works on my screen" to a real domain anyone can visit.
How to use it: download this file and give it to your AI (Claude, ChatGPT,
Cursor, Lovable chat) as a reference. Say: "Use this as my playbook for [task]."
Latest version + full guide: https://robotsonpayroll.com/resources/put-it-on-the-internet
-->

# The Go-Live Guide

Your app works on your screen. This guide gets it onto a real address on the internet, then puts your own domain on it. Three paths depending on how you built. Pick one, skip the other two.

**Pick your path:**

- **Path A:** you built in Lovable, Bolt, or Replit (the app lives in their website)
- **Path B:** you built locally with Claude Code or Cursor (the code lives on your computer)
- **Path C:** it's a single HTML file (a landing page, a game, a one-pager)

Then everyone meets back at the Domain Chapter at the bottom.

---

## Path A: you built in Lovable, Bolt, or Replit

Good news: these tools host for you (hosting means "a computer that keeps your app running and reachable 24/7 so yours doesn't have to"). You just have to press the button.

### Lovable

1. Top right of the editor, click **Publish**.
2. Lovable gives you a live URL like `yourproject.lovable.app`. That's already on the internet. Send it to someone right now to prove it.
3. Custom domain: click the **Publish** button again, then **Settings** (or go to your project's Settings and look for **Domains**). Click **Connect domain**, type the domain you bought, and Lovable shows you exactly which DNS records to add (records are explained in the Domain Chapter below). Custom domains require a paid Lovable plan (their cheapest paid tier, around $25/mo as of July 2026; check their pricing page, tiers move).

### Bolt

1. Top right, click **Deploy** (Bolt publishes through Netlify behind the scenes; Netlify is a hosting company).
2. You get a live `*.netlify.app` URL.
3. Custom domain: after deploying, look for **Claim this site** or the Netlify link in the deploy confirmation. That opens the project in Netlify, where you go to **Domain management**, then **Add a domain**. If the button has moved, look for anything named Domains in the site's settings.

### Replit

1. Click **Deploy** (top right). Replit will ask which type: for most vibe-coded apps pick **Autoscale** or the static option if it's just pages. Deployments require a paid Replit plan (Replit Core, around $25/mo as of July 2026).
2. You get a live `*.replit.app` URL.
3. Custom domain: open your deployment, go to the **Settings** tab, and look for **Link a domain** (or **Manually connect from another registrar**). Replit shows you the exact records to add.

**How you know it worked:** open the URL in your phone's browser, not just your computer. If it loads there, it's really on the internet.

---

## Path B: you built locally with Claude Code or Cursor

Your code lives in a folder on your computer. To put it online you push it to GitHub (a website that stores your code) and connect Vercel (a hosting company that turns GitHub code into a live website). Both are free to start.

### Step 1: get the code onto GitHub

If your project is not on GitHub yet, don't learn git today. Paste this into Claude Code or Cursor's chat:

> My project is not on GitHub yet. Walk me through putting it there, one step at a time, waiting for me to confirm each step. I have never used git. Use the GitHub website or the simplest possible commands, and after each step tell me what I should see if it worked.

### Step 2: deploy on Vercel

1. Go to vercel.com and click **Sign Up**. Choose **Continue with GitHub**. This matters: signing up with GitHub is what lets Vercel see your code.
2. Pick the **Hobby** plan (the free one).
3. On your dashboard, click **Add New**, then **Project**.
4. You'll see a list of your GitHub repos (repo is GitHub's word for a project folder). Click **Import** next to yours.
5. Vercel auto-detects the framework (Next.js, Vite, plain HTML). Usually you change nothing. Click **Deploy**.
6. Wait 1 to 3 minutes. Confetti means done. You get a URL like `yourproject.vercel.app`.

If the deploy fails with a red error, copy the entire error log, paste it into Claude Code, and say: "My Vercel deploy failed with this error. Explain what's wrong in plain English and fix it." Failed first deploys are normal, not a sign you did anything wrong.

**Bonus you didn't ask for:** from now on, every time you push new code to GitHub, Vercel redeploys automatically. That's the whole "deployment pipeline" thing people pay consultants for.

### What Vercel's free tier actually includes (July 2026)

- Unlimited projects and deployments for personal, non-commercial use.
- 100 GB of bandwidth a month. For a normal site that's tens of thousands of visits. You will not hit this by sharing with friends.
- Free HTTPS (the padlock in the browser), free `*.vercel.app` subdomain, custom domains included.

**When it stops being free:** the Hobby plan is for non-commercial use. If the site is a business (you charge money, it's for a company), Vercel's terms want you on **Pro, $20/month per member**. You also outgrow Hobby if you blow past the bandwidth cap or need teammates in the dashboard. For "I built a thing, look at it," Hobby is fine and genuinely $0.

---

## Path C: it's just one HTML page

You do not need GitHub for a single file. Two drag-and-drop options:

**Netlify Drop** (fastest way to put anything online, period):

1. Put your file in a folder and make sure it's named `index.html` (that exact name is what servers show by default).
2. Go to app.netlify.com/drop.
3. Drag the folder onto the page. Not the file, the folder containing it.
4. You get a live URL in about 10 seconds. Free. To keep the site and edit it later, create a free Netlify account when it prompts you.

**Vercel** works too: same flow as Path B, but you can also drag a folder at vercel.com/new without touching GitHub.

Custom domain on Netlify: **Domain management** in your site's settings, then **Add a domain**. Free tier includes it.

---

## The Domain Chapter: your own name on the internet

Right now your site is `yourproject.vercel.app`. Works fine, looks like a school project. A domain is the address you actually want: `yourthing.com`.

### Buying one (10 minutes, $10 to $15 a year)

Two registrars worth using (a registrar is a shop that sells domains):

- **Cloudflare** (domains section of cloudflare.com): sells domains at wholesale cost, no markup. A `.com` runs about $10.50/yr as of July 2026, and crucially the renewal price is the same. Slightly more technical-looking interface.
- **Namecheap** (namecheap.com): friendlier interface. A `.com` is often $10-12 the first year, renewing around $16-17/yr. Watch the renewal price at checkout, not the promo price.

Rules of thumb:

- **`.com` if available, `.dev` or `.app` if you're a builder type, `.io` is fine but pricier (around $30-40/yr).**
- If a registrar quotes a weirdly cheap first year ($1.99), the renewal is where they get you. Check year two before buying.
- Skip every upsell at checkout except one: **WHOIS privacy** (hides your home address from the public domain registry). Both Cloudflare and Namecheap include it free. Anyone charging for it in 2026 is not your friend.

### What DNS is, in one metaphor

DNS is the internet's phone book. Browsers can't find "yourthing.com" by name; they need the number of the computer serving it. DNS is the public directory that says "yourthing.com? That's at this address." When you connect a domain, all you're doing is writing your host's number into the phone book. Nothing moves, no code changes. It's a directory entry.

### The only two records you'll ever touch

A DNS record is one line in that phone book. There are a dozen types. As a beginner you touch exactly two:

- **A record**: "this name points to this exact numeric address (an IP address, like 76.76.21.21)." Used for the bare domain, `yourthing.com`. You point it at the number your host gives you. Metaphor: writing someone's actual phone number in the book.
- **CNAME record**: "this name is an alias for that other name." Used for `www.yourthing.com`, pointed at something like `cname.vercel-dns.com`. Metaphor: instead of a number, the book says "see Vercel's entry." If the host's number ever changes, your entry stays correct automatically. That's why hosts prefer CNAMEs.

That's it. Your host (Vercel, Lovable, Netlify, Replit) shows you the exact values on its "add domain" screen: usually one A record for the bare domain and one CNAME for www. You copy them into your registrar's DNS page (Cloudflare: the DNS tab; Namecheap: Domain List, then **Manage**, then **Advanced DNS**).

### Connecting it without suffering

Don't do it from memory. Use the companion file `domain-connect-prompt.md` in this kit: fill in where you bought the domain and where the app is hosted, paste it into Claude or ChatGPT, and it walks you through click by click with a check after every step.

**Expectation setting:** after you save the records, the phone book has to update worldwide (called propagation). Officially it can take up to 48 hours. In practice it's usually live in 10 minutes. Check at whatsmydns.net: type your domain, and green checkmarks around the map mean the entry has spread. Your host's domain screen will also flip from "pending" to a checkmark, and issue your HTTPS padlock automatically within a few minutes of that.

### What breaks most often

- **Works without www but not with it (or the reverse):** you added one record, not both. Add the missing A or CNAME.
- **"Domain already in use" on Vercel:** the domain is attached to another Vercel project (often an old test). Remove it there first.
- **Still not working after an hour:** paste a screenshot of your DNS records page into your AI and say "here are my DNS records, my host told me to set [what they told you]. What's wrong?" It's almost always a typo, a stray `https://` in a record value, or the record added to the wrong domain.

---

## When you outgrow this

- Site's live but nobody finds it: the **seo-geo-engine** kit gets you into Google and the AI answers.
- Deploying by hand gets old: the **github-actions-runbooks** kit automates deploys and checks. That one's much later; don't go there until pushing to GitHub feels boring.
