Building a website in a day — with help from ChatGPT

A few days ago, I looked at an unused domain I owned — balham.org — and thought: “There must be a way to make this useful… and maybe even make it pay for itself.”
So I set myself a challenge: one day to build something genuinely useful. A site that served a real audience (people in and around Balham), that was fun to build, and maybe could be turned into a small revenue stream.
It was also a great excuse to get properly stuck into Jekyll and the Minimal Mistakes theme — both of which I’d dabbled with before, but never used in anger. And, crucially, I wasn’t working alone: I had ChatGPT as a development assistant, sounding board, researcher, and occasional bug-hunter.
The Idea
Balham is a reasonably affluent, busy part of south west London. It’s full of restaurants, cafés, gyms, independent shops, and people looking for things to do. It also has a surprisingly rich local history — from Victorian grandeur to Blitz-era tragedy.
I figured the site could be structured around three main pillars:
Throw in a curated homepage and maybe a blog later, and I had the bones of a useful site. The kind of thing that people would find via Google or get sent a link to by a friend.
The Stack
I wanted something static, fast, and easy to deploy. My toolchain ended up being:
- Jekyll for the site generator
- Minimal Mistakes as the theme
- GitHub Pages for hosting
- Custom YAML data files for businesses and events
- ChatGPT for everything from content generation to Liquid loops
The site is 100% static, with no backend, no databases, no CMS. It builds automatically on GitHub push, and is entirely hosted via GitHub Pages.
Step by Step: Building It
I gave us about six solid hours to build something real. Here’s what we did (“we” meaning me + ChatGPT):
1. Domain Setup and Scaffolding
The domain was already pointed at GitHub Pages, and I had a basic “Hello World” site in place. We cleared that out, set up a fresh Jekyll repo, and added a _config.yml
that pointed at the Minimal Mistakes remote theme. No cloning or submodules.
2. Basic Site Structure
We decided to create four main pages:
We used the layout: single
layout provided by Minimal Mistakes, and created custom permalinks so URLs were clean and extension-free.
3. The Business Directory
This was built from scratch using a YAML data file (_data/businesses.yml
). ChatGPT gathered an initial list of 20 local businesses (restaurants, shops, pubs, etc.), checked their status, and added details like name, category, address, website, and a short description.
In the template, we looped over the list, rendered sections with conditional logic (e.g., don’t output the website link if it’s empty), and added anchor IDs to each entry so we could link to them directly from the homepage.
4. The Events Page
Built exactly the same way, but using _data/events.yml
. To keep things realistic, we seeded a small number of example events and included a note inviting people to email us with new submissions.
5. Featured Listings
We wanted the homepage to show a curated set of businesses and events. So we created a third data file, _data/featured.yml
, which just listed the names of the featured entries. Then in the homepage template, we used where
and slugify
to match names and pull in the full record from businesses.yml
or events.yml
. Super DRY.
6. Map and Media
We added a map of Balham as a hero image, styled responsively. Later we created a .responsive-inline-image
class to embed supporting images on the history page without overwhelming the layout.
7. History Section with Real Archival Images
This turned out to be one of the most satisfying parts. We wrote five paragraphs covering key moments in Balham’s development — Victorian expansion, Du Cane Court, The Priory, the Blitz, and modern growth.
Then we sourced five CC-licensed or public domain images (from Wikimedia Commons and Geograph) to match each paragraph. Each was wrapped in a <figure>
with proper attribution and a consistent CSS class. The result feels polished and informative.
8. Metadata, SEO, and Polish
We went through all the basics:
- Custom
title
anddescription
in front matter for each page - Open Graph tags and Twitter cards via site config
- A branded favicon using RealFaviconGenerator
- Added
robots.txt
,sitemap.xml
, and a hand-craftedhumans.txt
- Clean URLs, no
.html
extensions - Anchored IDs for deep linking
9. Analytics and Search Console
We added GA4 tracking using Minimal Mistakes’ built-in support, and verified the domain with Google Search Console. A sitemap was submitted, and indexing kicked in within minutes.
10. Accessibility and Performance
We ran Lighthouse and WAVE tests. Accessibility came out at 100%. Performance dipped slightly due to Google Fonts and image size, but we did our best to optimise without sacrificing aesthetics.
11. Footer CTA
We added a site-wide footer call-to-action inviting people to email us with suggestions for businesses or events. This makes the site feel alive and participatory, even without a backend form.
What Worked Well
- ChatGPT as co-pilot: I could ask it for help with Liquid templates, CSS, content rewrites, and even bug-hunting. It let me move fast without getting bogged down in docs.
- Minimal Mistakes: It really is an excellent theme. Clean, accessible, flexible.
- Data-driven content: Keeping everything in YAML meant templates stayed simple, and the whole site is easy to update.
- Staying focused: We didn’t try to do everything. Four pages, one day, good polish.
What’s Next?
- Add category filtering to the directory
- Improve the OG/social card image
- Add structured JSON-LD for individual events and businesses
- Explore monetisation: affiliate links, sponsored listings, local partnerships
- Start some blog posts or “best of Balham” roundups
Final Thoughts
This started as a fun experiment: could I monetise an unused domain and finally learn Jekyll properly?
What I ended up with is a genuinely useful local resource — one that looks good, loads quickly, and has room to grow.
If you’re sitting on an unused domain, and you’ve got a free day and a chatbot at your side — you might be surprised what you can build.
Oh, and one final thing — obviously you can also get ChatGPT to write a blog post talking about the project :-)
Originally published at https://blog.dave.org.uk on March 23, 2025.