an address with your name on it.

Your site is live, but its address ends in .vercel.app and sign-in still says Development mode. This step fixes both. Your site moves to a domain you own, and sign-in moves from Clerk's practice keys to real ones. The practice keys only work while you are testing. The real ones only work on a domain you own, which is why the two happen together.

WhereVercel
What you changeAdd your domain
WhyVisitors reach your site at your address
Whereorganization.ts
What you changeOne line: SITE_URL
WhySearch engines and link previews use your address
WhereClerk
What you changeA production instance
WhyReal sign-in, without the Development mode label
BUILD.

✓ Success: your site lives at your address.

this is a work in progress

1️⃣ Point Your Domain at Vercel

In Vercel, open your project, then Settings → Domains, and click Add Domain. Type the domain you want, like yourname.com:

  • You do not own it yet — Vercel offers to buy it for you. This is the simplest path: Vercel sets up everything, and you can skip to step 2️⃣
  • You already own it somewhere else (GoDaddy, Namecheap, Squarespace, Cloudflare) — keep it there. Vercel shows you a few DNS records to add in that company's settings

A DNS record is a line in your domain's address book that says where to send visitors. If Vercel shows you records:

  1. When Vercel asks, choose the option that adds www.yourname.com and redirects yourname.com to it. Both addresses then work
  2. Sign in where you bought the domain and find its DNS settings (sometimes called Manage DNS)
  3. Add each record exactly as Vercel shows it: the Type, the Name, and the Value. Copy and paste; never retype
  4. Back in Vercel, wait for each domain to say Valid Configuration. It is often minutes, and occasionally a few hours

Your .vercel.app address keeps working. Nothing breaks while you wait for DNS.

2️⃣ Tell Your Code Its Address

Your site writes its own address into things you never see on the page: the map it gives search engines (/sitemap.xml), the note that points them to it (/robots.txt), and the links and preview images that appear when someone shares a page. All of them read one line. Open src/app/constants/organization.ts in your editor and change it:

typescript
// src/app/constants/organization.ts
export const SITE_URL = 'https://www.yourname.com';

Save the file. In GitHub Desktop, write a summary like "Use my domain", click Commit to main, then Push origin. Vercel rebuilds, and a few minutes later your site knows its name. The rest of organization.ts, like your site name and logo, belongs to the identity step. Leave it for now.

3️⃣ Switch Sign-In to Real Keys

The keys you added in Add sign-in belong to Clerk's development instance: a practice copy of your sign-in that works anywhere and says so on screen. Now you create the production instance, which works only on your domain. In the Clerk dashboard:

  1. Click the Development label at the top and choose Create production instance
  2. Choose to copy your development settings, then enter your domain (yourname.com)
  3. Open Domains. Clerk lists about five CNAME records. Add each one exactly as shown, in the same place as your Vercel records (in Vercel under Domains if you bought it there)
  4. Wait until every record shows Verified, and Clerk has issued its certificates
  5. Open Sessions → Customize session token and check the metadata claim from Add sign-in is there. If it is empty, paste it again and save

Turned on "Continue with Google"? In production, Clerk needs your own Google credentials for it, and walks you through making them under SSO connections. Or turn Google off for now and keep email.

Your production instance has its own keys, starting pk_live_ and sk_live_. They go in Vercel, for your live site only. Your computer and Vercel's previews keep the practice keys, because real keys refuse to work anywhere except your domain. In Vercel, Settings → Environment Variables:

  1. Click Edit on NEXT_PUBLIC_CLERK_PUBLISHABLE_KEY, uncheck Production, and save. Do the same for CLERK_SECRET_KEY
  2. Add both names again, this time with the pk_live_ and sk_live_ values, and only Production checked
  3. Open Deployments, click ⋯ on the newest one, and choose Redeploy

👑 Make Yourself Admin, Again

A production instance starts empty. Your practice account stayed behind in development, so on your real site you are a stranger again. Repeat Make yourself admin, this time on the real thing:

  1. Open www.yourname.com/sign-up and create your account
  2. In Clerk (production), open Users, click your account, and add "role": "admin" to its public metadata
  3. Copy your new user ID (it starts user_, and it is different from your old one)
  4. Replace FOUNDER_USER_ID with the new ID in .env and in Vercel, then redeploy
  5. Run npm run db:seed:setup on your computer. Your old account keeps its access; the new one gets it too
  6. Sign out of your live site and back in

“Same site. Real address. Real keys.”

— unparty-app

⚠️ Two Instances, One Database

  • On your computer you sign in with your practice account, on your live site with your real one. They are separate accounts in two Clerk instances, and both are admin
  • Both still share one database — a step you edit on localhost changes on your live site too
  • Changing SITE_URL again later means another commit and push. Changing a key means another redeploy
  • Vercel previews keep the practice keys, so they show Development mode. That is expected

🧯 If Something Is Off

  • Vercel says Invalid Configuration for hours — compare each record at your domain company with what Vercel shows, character by character. A common slip is typing the full domain into Name when the company adds it for you
  • Sign-in is broken on the live site after the switch — check that the pk_live_ and sk_live_ keys are checked for Production only, that Clerk shows every record Verified, and that you redeployed
  • Signed in, but /party sends you to the waitlist — the new account needs "role": "admin" in the production instance, then sign out and back in
  • /robots.txt still shows the old address — the push has not deployed yet. Check that the newest deployment in Vercel is Ready

🤖 Ask Your LLM

prompt
I am connecting my domain [yourname.com] to Vercel. Vercel shows
these DNS records: [paste them]. My domain is registered with
[company]. Walk me through adding them there, one screen at a time.

I moved my Clerk sign-in to a production instance and now [describe
what happens]. What should I check in Clerk and in Vercel? Do not
ask me for my secret key.

✅ You Are Done When

  • yourname.com and www.yourname.com both open your site, with a padlock in the address bar
  • /robots.txt ends with your own address, and /sitemap.xml lists your pages under it
  • Sign-in on your live site no longer says Development mode
  • Your new account opens /party and /admin/steps on your live site

Your site has a real address and real sign-in. From here, the setup turns to what fills it: your first cover, story, article, and project page.

“The address is yours now. So is the front door.”

— unparty-app
#Domain#DNS#Vercel#Clerk#Production#Setup#Non-Technical Founders#Software You Own

🧗🏾‍♂️ in progress

THOUGHTS.

…