Put It Live on Netlify, Free, in About Two Minutes
Netlify is the host this program recommends, and FlyRank is a Netlify partner. It is free for everything you will do here, it serves your site over HTTPS, it takes a custom domain at launch, and it can catch your contact form without a server. Most importantly it has the shortest path from "a folder on my laptop" to "a link I can send to someone." This page is the whole thing: your first deploy, updating it, your own domain, forms, and the errors everyone hits the first time.
- It gives your site an address. Your folder becomes a real URL anyone in the world can open, on any device.
- It is free, and stays free. The free tier covers a portfolio's traffic many times over. No card, no trial clock.
- It handles the scary parts. HTTPS, the padlock, and the server are done for you. You never touch a server.
- It grows with the program. Week 4 you go live, Week 8 it catches your form, Week 9 it takes your own domain.
Method 1: Drag and drop
The fastest way to go live, and the one to use in Week 4. No Git, no terminal, no build step. If you have a folder with an index.html in it, you are ninety seconds from a URL.
- Create a free account at app.netlify.com/signup. Email or a GitHub login both work.
- Get your site folder ready on your computer. Your homepage must be named index.html and it must sit in the root of that folder, not in a subfolder. This is the single most common thing people get wrong.
- Open app.netlify.com/drop.
- Drag the folder onto the deploy area, not the files inside it and not a zip you made by hand. Netlify uploads it and starts a deploy.
- Wait a few seconds. Netlify gives you a live URL like random-words-123.netlify.app. That is a real, public address. Open it on your phone to prove it.
- Rename it to something you are willing to show a stranger: Site configuration → Change site name. You get yourname.netlify.app. Do this before you put the link anywhere.
How to update a site you already deployed
Dragging a folder to app.netlify.com/drop a second time creates a brand new site with a brand new URL. That is not what you want, and it is how people end up with six half-finished sites and no idea which link is the real one. To update the site you already have:
- Open your existing site in the Netlify dashboard.
- Go to the Deploys tab.
- Drag your updated folder onto the deploy area at the bottom of that tab.
- Your existing URL now serves the new version. Same link, new content, nothing to re-share.
Method 2: Connect a Git repo
Not required for this program, and not worth learning Git just for this. But if your work already lives in a GitHub repo, connecting it means your site updates itself every time you push, and you stop dragging folders entirely.
- In Netlify, choose Add new site → Import an existing project.
- Connect GitHub and pick your repository.
- For a plain HTML site, leave the build command empty and set the publish directory to the folder holding your index.html (often just /). Netlify only needs a build command if your site has a build step, and yours almost certainly does not.
- Hit Deploy. From now on, every push to your main branch redeploys the site automatically.
Your own domain, and HTTPS
In Week 9 the site moves from yourname.netlify.app to yourname.com. Netlify does the hard half. A domain costs roughly ten dollars a year and is the only money this program can ask of you, and a clean yourname.netlify.app is a genuinely fine free fallback.
- Buy the domain somewhere honest: Porkbun and Namecheap are both fine.
- In Netlify: Domain management → Add a domain, and enter the one you bought.
- Netlify shows you the DNS records to set. Either point your registrar's nameservers at Netlify (simplest), or copy the records into your registrar by hand.
- Wait. DNS changes are slow by nature: usually minutes, sometimes a few hours. This is normal and there is nothing to fix while you wait.
- Netlify issues a free HTTPS certificate automatically once the domain resolves. You get the padlock without doing anything.
- Set your preferred version (with or without www) so the other one redirects to it instead of splitting your traffic.
Netlify Forms: a contact form with no server
Week 8 asks for one real feature that genuinely works. If you host on Netlify, a working contact form is close to free: add one attribute to your form tag and Netlify collects every submission for you.
- Turn on form detection first: in your dashboard, go to Forms and select Enable form detection. Do this before the deploy, or Netlify will not go looking for your form.
- Give your <form> tag three things: name="contact", method="POST", and data-netlify="true". All three matter.
- Make sure every input has a name attribute too. Netlify uses those names to label what you receive, and an input without one silently goes missing.
- Deploy. Netlify reads your HTML and finds the form at deploy time, not while you preview locally, so it only starts working once it is live.
- Submit the form yourself on the live site. This is your Week 8 evidence: a real submission that actually reached you.
- Read it in the Forms tab in your dashboard, and turn on email notifications so future ones reach your inbox instead of sitting in a panel you forget.
The five errors everyone hits
Every one of these has happened to every intern who came before you. None of them mean you are bad at this.
| What you see | What is actually wrong | The fix |
|---|---|---|
| "Page not found" on your homepage | No index.html in the root of what you dragged, or it is spelled differently. | Rename your homepage to exactly index.html, lowercase, and put it at the top level of the folder. Deploy again. |
| A file list instead of your site | You dragged a folder that contains your site folder, so Netlify is one level too high. | Drag the folder that has index.html directly inside it, not its parent. |
| Site loads but images are broken | Filename case. Photo.JPG and photo.jpg are the same on your Mac or Windows machine, but different on Netlify's servers. | Make the name in your HTML match the real filename exactly, capital letters included. |
| Your changes are not showing | Usually the browser cache, occasionally a deploy that failed. | Hard refresh, or open the URL in a private window. Then check the Deploys tab shows "Published" and not a red failure. |
| The form does nothing | The form was tested locally, or an input has no name. | Test on the live URL only, and give every input a name attribute. |
Netlify's own docs
Netlify Drop ↗
The drag-and-drop deploy page itself. Bookmark it: this is where Week 4 actually happens.
Netlify DocsCustom domains & HTTPS ↗
Point your own domain at your site and get the padlock, step by step. The Week 9 move from a long URL to yourname.com.
Netlify DocsNetlify Forms setup ↗
The full reference for the form attribute, spam filtering, and notifications. Your Week 8 backup when something will not catch.
Netlify DocsDeploy overview ↗
Every way to deploy, deploy previews, and rolling back to an earlier version. Useful once you connect a repo.