Every website I run lives on GitHub Pages. This weblog, my consultancy site, my company site, my show site, the small holding pages: five sites, all of them folders of files in GitHub repositories, all of them served free. My total hosting bill is zero dollars. My total domain bill is the wholesale renewal on a handful of domains, roughly ten dollars a year each. People keep asking how that works, usually while paying a platform forty dollars a month for the privilege of renting their own business card. Here is the whole thing, in the order I would do it for you if we were sitting at the same table.
Buy the domain at Cloudflare, at wholesale
Start with the domain, and buy it from Cloudflare Registrar. Cloudflare charges the wholesale price it pays the registry, no markup, no teaser year followed by a tripled renewal, no checkout gauntlet of add-ons. Privacy is included. Renewal on a .com runs about ten to fifteen dollars a year depending on the registry, and that is the entire annual cost of everything in this post. Set it to auto-renew and turn on two-factor authentication. More small websites die of an expired domain than of every technical failure combined.
Make a free GitHub account and a repository
GitHub is free for this. A repository is a folder with a memory: it holds your site's files, and every saved change is a commit, a dated snapshot you can compare or roll back. Create a repo, name it something plain, and stop worrying about the rest of the vocabulary. Branch, clone, pull request: programmer words, none of them needed to publish a page.
In the repo's Settings, under Pages, tell GitHub to publish from the main branch. GitHub's own walkthrough covers the clicks. A minute later the site answers at a free yourusername.github.io address. Empty, but answering. A working address is the moment the site stops being an idea.
Point the domain at GitHub
DNS is the phone book that sends your domain to GitHub's computers, and Cloudflare's DNS comes free with the domain. GitHub documents the exact records for connecting a custom domain, and there are only two kinds to add. A CNAME record sends www to yourusername.github.io. Four A records send the bare domain to GitHub's addresses: 185.199.108.153, 185.199.109.153, 185.199.110.153, 185.199.111.153. Set them to DNS only while GitHub verifies them, then tick Enforce HTTPS in the Pages settings. The security certificate issues and renews itself. The padlock is free and it is forever. You will probably never touch these records again.
The first page is one file
A website at minimum is one file named index.html. Ask the AI for one: describe your business, your city, your phone number, and tell the chat to use only the facts you gave it. Paste the result into GitHub's web editor, write a commit note, save. Reload your domain. Live. Everything after this is editing a working website instead of launching a project, and that difference is the whole psychological game.
The loop is the craft
From there, my sites get built the way this post did. **Words first, anywhere**: a dictated rant, notes on my phone, a customer's question. **Then the AI chat**: paste the words in, ask for the finished page or file back, with instructions about names, prices, and facts. **Then GitHub**: paste the file into the web editor, commit with a plain note about what changed. **Then reload.** A minute later it is live, and if I hate it, the commit history holds the version before, one paste away.
Images ride the same loop. My AI makes illustrations, processes photographs, crops and compresses. I upload the file to the repo, tell the chat the file's name, and it writes the reference into the page. No dashboard, no plugins, no plan tier standing between me and a paragraph. The site is files, and files can be read, copied, backed up, and moved to any host on earth. If GitHub Pages disappeared tomorrow I would have all five sites rehomed before lunch, because I own the folders.
What it costs, honestly
Ten to fifteen dollars a year per domain. That is the ledger. A Wix or Squarespace site runs $200 to $480 a year after the teaser, lives inside their system, and evaporates when you stop paying. Managed WordPress hosting costs similar money and throws in plugin maintenance as a hobby. My arrangement inverts it: I own the domain, I own the files, the rent is zero, and the stack scales from a one-page business card to this weblog, which publishes daily and carries years of posts, audio, and images inside GitHub's published free limits without breathing hard.
Where it stops
GitHub Pages serves static sites, so the honest edges are these. No store or checkout built in; selling takes a Stripe or PayPal link, or a real store elsewhere. Forms need a helper service to catch them. Logins, dashboards, anything that thinks per visitor: a different project, with a developer and real hosting. I have no sermon about this. A tool that does one thing for free forever does not have to do everything.
And you are allowed to hire help anyway. Some owners run this loop happily forever. Some would rather hand the files to a technical partner and keep the selling and the client relationships for themselves, which is, not coincidentally, the arrangement a client proposed to me on the phone this morning. The stack makes that partnership cheap to run, because nobody in it is paying rent to a platform. Ten dollars a year, a folder with a memory, and an AI that types. That is a website.