Nineteen years of word of mouth and no website. Now the salon has one that looks the way the salon feels.
- Client
- True Colors Hair & Nail Salon
- Where
- Gate City Highway, Bristol, Virginia
- What I did
- Direction, design and build
- 1file brings the home page and every photograph on itChecked on the live site, 13 October 2026
- 0video files: the moving silk is drawn in codeFrom the build
- 9stylists, each running their own business from the salonFrom the site’s own copy
01The brief
True Colors has been on Gate City Highway since 2007. It runs on station rental: nine independent stylists, each with their own book, under one roof.
Before this it had no website, no social accounts and no claimed Google listing. Clients found it by word of mouth. Everything on the new site came from one interview with the owner.
02What I built
Silk that is drawn, not filmed
The moving fabric at the top of the page is a fragment shader I wrote by hand. There is no video to download and no library behind it. Its wine red comes from Ember, the dark direction the owner chose.
Open now, in Bristol time
Open and closed are worked out in the salon’s own time zone, so a visitor in Seattle gets the Bristol answer. The hours live in one place and the week grid reads from it, so the two can’t disagree.

A page for the other customers
A salon that rents stations has two kinds of customer: people who want their hair done, and stylists who want a chair. A second page is for the stylists: your book, your prices, your hours, what’s included and what it costs.




On a phone, 390 pixels wide.
03Under the hood
Self-contained HTML pages · Hand-written WebGL shader · JSON-LD · No dependencies · Vercel
- One file, no build step
- The home page is a single HTML file with its photographs inlined. Nothing to compile, and no package that can break it a year from now.
- Found by search
- Structured data describes the salon to search engines: its address, opening hours, founding year and services.
- One source for the hours
- The open-now line and the week grid read the same map, computed in the salon’s time zone, not the visitor’s.





