← All projects

Halo Hair Gives a Home Salon a Proper Front Door

A one-page website for Amy Williams's one-to-one hair salon in Chinnor, near Thame. Calm, fast on a phone, findable in local search and built to turn a visit into a message.

Halo Hair homepage on desktop with a hair colour photo in an arched frame
Desktop. Real work up front, booking one click away.

The short version

page, doing one job
1
frameworks
0
phone sizes checked before each release
5

Why it's cool

Amy runs Halo Hair, a salon at home in Chinnor that sees one client at a time. The business lived on Instagram, which is fine until someone searches for a hairdresser near Thame and finds everyone else. Halo Hair now has its own domain and a site that feels like the salon: warm, unhurried and mostly photos of real work.

It is deliberately boring technology. One HTML page, one stylesheet and a little JavaScript. It loads fast on a phone in a car park, which is where people actually look for a hairdresser.

What I had to steer

The traps were about honesty and place. The salon is in Chinnor, and the easy win would be to say Thame, because more people search for it. The site welcomes clients from Thame without ever claiming a Thame address, and the title, FAQs and business data all agree on that.

No prices online, because Amy quotes personally. No invented reviews. The real reviews and booking link are still to come, and the site waits for them rather than faking them.

What I wired together

Static HTML, CSS and JavaScript on Vercel, with the domain on Namecheap. A Python script makes responsive WebP copies of every photo, respects EXIF rotation and strips the source metadata. Another script checks the site before release and again against the live domain afterwards. HairSalon structured data, Open Graph images, a sitemap and call and text buttons that stay within thumb reach on phones.

Where I pushed it

Accessibility and phones, done properly. The menu works with Tab, Shift+Tab and Escape. The gallery opens with Enter and puts focus back where it came from. Every release is checked at 320, 390 and 430 pixels portrait plus two landscape sizes, with reduced motion and with JavaScript switched off.

Most small business sites never get that treatment. This one did, and there is nothing to maintain except the photos.

Not a screenshot

See it live.

halohair.design homepage
Small business site The live site. Scroll it, open the gallery, try the FAQs.

The build log

A Front Door for a Salon

The Question

Halo Hair has been cutting and colouring since 2020 and had no website. Instagram does a lot, but it does not show up when someone types “hairdresser near Thame” into Google, and it does not give you a link that feels like a real salon.

Could I give it a site that matched the salon, got found locally and never needed a developer to keep running?

The Build

One static page. About Amy, services, a gallery of real client work, FAQs, booking and contact. No framework, no build step, no CMS to update. Photos go through a script that makes responsive WebP copies and strips the metadata, because nobody’s phone location belongs on a website.

The local search work was the fiddly part. Chinnor is where the salon is. Thame is where a lot of the searching happens. The site serves both without pretending to be somewhere it is not.

The Outcome

Live at halohair.design on its own domain. The mobile release in October tightened the phone layout, the quick contact bar and the local search copy, and it passed every check on five phone sizes.

Still waiting on real reviews and the confirmed booking link. Those go in when they are real. A small site that tells the truth beats a big one that does not.