# Deploy (/academy/deploy)



Localhost is a dress rehearsal. Deploy is opening night.

Your app on `http://localhost:3000` is real to you. It is imaginary to a judge on the other side of the room. **Deploy** means you put the thing on a computer that stays on, give it a public URL, and let strangers hit refresh.

That's it. Not "the cloud." Not "DevOps." A URL that works when your laptop is closed.

**The two rooms, again**

You often deploy twice:

* The [frontend](/academy/frontend-backend) — a pile of files on a CDN, or a Next app on Vercel.
* The [backend](/academy/frontend-backend) — a process that can talk to your [database](/academy/database).

Sometimes one platform does both. Sometimes you tape two URLs together and pray CORS is in a good mood. The builder's deploy options are just "which lobby do you want to stand in."

**Staging vs production**

Production is the house with guests inside. Staging is the dress rehearsal room next door. You break staging on purpose. You treat production like a live mic.

At a hackathon, staging is a luxury. You will deploy straight to production. That's fine. Make the first deploy early, while the app still says "hello," so the second deploy is a habit instead of a boss fight.

**Rollback is the fire exit**

Shipping the broken version is not the disaster. Having no way back is the disaster. A platform that lets you click "previous deploy" is worth more than a clever Dockerfile you wrote during lunch.

**What this unlocks**

Until you deploy, you have a project. After you deploy, you have a link. Links are what people open. Everything else is rehearsal.
