Skip to contentSkip to content
Expedition 01Three chairs, Kettle StreetHair Salon ConceptAlder Bend, BCThe Trailhead· from $2,000

Mica Hair Studio

The category solved booking a decade ago. It never solved deciding.

3

Lights the ring is seen under

10

Levels on the colour ladder

0

Cross-origin requests

0 KB

JavaScript driving the motion

mica-hair-studio.vercel.app
Mica Hair Studio live site screenshot
Built for salons, barbers, and studios where the customer arrives unsure what to ask for

Why booking a colour appointment is stressful

01

She does not know what to ask for

The menu is written in the trade's language: balayage, foils, a root retouch, a toner, a gloss. A first-timer picks by guessing, and often books the wrong service for the hair she actually has.

And it costs the businessA wrongly booked service means the wrong block of time. The stylist either rushes work that needed four hours or loses a chair for two, and somebody leaves the day unhappy about a number nobody agreed to.

02

The price is a starting-at, which means unknown

Almost every salon quotes from a number that only goes up. The customer cannot tell whether she is agreeing to $120 or $400, so the safest move is to keep putting it off.

And it costs the businessSilence on price filters for the least price-sensitive customer and quietly turns away the rest, and it guarantees an awkward conversation at the till on every long colour appointment.

03

A photograph is not a promise

Reference photos are long hair, styled, under perfect light, and usually filtered. Nobody has told her what her hair can actually reach, or that it might take three visits to get there.

And it costs the businessThe gap between the photo and the result is the single largest source of redo work, refunds, and the review that costs a small salon a month of new clients.

The approach

What this build does instead

01

Show the instrument, not the marketing

The swatch ring and the ten-level ladder are the tools the colourist already uses. Putting them on the homepage lets the customer do the comparison herself, in the light of her choosing.

02

Name the service for her

She describes her hair in ordinary words. The site names the service, prices it to a ceiling, and says how many visits it will take, before she has committed to anything.

03

Publish the limits

What the salon does not do, who it is not for, what the room smells and sounds like, and how honest a photo match can be. Limits stated up front read as expertise, not apology.

The story

The thinking behind the build

Mica Hair Studio is a labelled concept build: a fictional three-chair salon in the invented town of Alder Bend, BC. It exists to answer a question the salon category has quietly ignored. Booking is a solved commodity, and nearly every salon site is built around it. Almost none of them help the person who does not yet know what to book, what it will cost, or whether the thing she saw in a photograph is even possible on her hair. This build spends its entire effort in the hours before the booking.

The research came before the design. Reading across roughly forty-five salon websites, the pattern was consistent enough to build against: the category has fully solved transacting and has barely begun to solve deciding. Almost every site is a booking widget with photographs around it. Very few help the person who is sitting there unsure whether the thing she wants is called balayage, whether her box dye from last year rules it out, or whether the price she has seen is the price she will pay.

So the concept came from the trade rather than a design gallery. A colourist's swatch ring exists for exactly one reason: a photograph lies and a swatch does not. It is the object that ends the argument before it starts, and it is the only honest way to answer what will this look like on me. Making the website that object gave the build its hero, its palette, its structure, and its argument all at once.

The signature is the ring rendered in WebGL2 with three lighting states, and its value is that one of those states is bad news. Under the six-in-the-evening light, levels one through four crush together and become indistinguishable. That is not a rendering flaw, it is the reason a colourist walks you to the window, and putting it on the homepage turns a policy the customer would otherwise experience as a delay into something she has already seen for herself.

The commercial layer is where the category actually loses people. Prices carry a ceiling instead of a starting-at, which is the construction the trade's own body has condemned and which the whole industry still uses. The booking page does not hand a first-timer a jargon menu and ask her to pick; it asks about her hair in plain language and names the service for her, with a real number and a visit count attached. Every stylist page states what she does not do, which is the fastest trust move available to any specialist and one almost nobody makes.

The accessibility work is a design feature here rather than a compliance chore, because the category leaves it almost entirely unpublished. Step-free entry, a measured door width, where to park, which days the room smells like colour, how loud it gets, and the fact that a silent appointment can be requested with any stylist. For a customer with sensory sensitivities or a mobility aid, that block is the difference between booking and not, and all it costs is the willingness to write it down.

Technically the build is deliberately austere. There are zero cross-origin requests in the browser, so the page loads without a booking widget, review embed, map iframe, chat bubble, or font CDN. The motion runs on CSS scroll-driven timelines at zero kilobytes of JavaScript, authored so the finished state is the default and animation is pure enhancement, which means reduced-motion visitors and unsupported browsers get the composed page rather than a broken one. Cumulative layout shift measures 0.00141 at desktop width and 0.0021 on a phone.

The salon, the town, the stylists, the prices and the policies are invented. The system is real, and for a working salon the same build takes their chairs, their price list, their colour lines, and their booking path, with the ring holding their actual swatches.

Why it converts

What the visitor feels by the end

She knows the ceiling before she sits down

The number stops being a surprise waiting at the end of three hours and becomes a thing she already agreed to.

She understands why the answer might be no

Having seen the levels collapse under evening light, a stylist saying it will take more than one visit reads as competence rather than an upsell.

She knows what the room is like before she walks in

Step-free entry, where to park, how loud it is, whether she has to make conversation. For a lot of people that block is the whole decision.

The system

Everything that shipped.

I built the site as the colourist's own instrument. The hero is a swatch ring: a WebGL2 fan of hair swatches you can hold against a ten-level ladder, tone by tone, and re-light under salon light, daylight, or six in the evening. Underneath sits the trade's honest machinery, shown to the customer for the first time: the 1-to-10 level scale every colourist uses and no client has ever been shown, prices quoted with a ceiling rather than a starting-at, a naming tool that takes a description of your hair and tells you which service that actually is and how many visits it takes, and a page per stylist stating her levels, what she does not do, whether she is taking new clients, and how far out she books.

Highlights

  • The swatch ring: a WebGL2 fan of hair swatches held against a ten-level ladder, re-lightable under salon light, daylight, and 6pm, where the evening state visibly collapses the dark levels together
  • The level ladder, the trade's own 1-to-10 scale, shown to the customer instead of kept behind the chair, and used as the site's dark interlude where swatches glow the way they do in a salon drawer
  • Prices with a ceiling rather than a starting-at, which is the construction the industry's own trade body has condemned
  • A naming tool instead of a jargon menu: describe your hair, your length, its history and how far you want to go, and it names the service, prices it to a ceiling, and says how many visits it takes
  • A page per stylist carrying her levels, the services she does not do, whether she is taking new clients, and how far out she books
  • What physically happens in the next three hours, written out, because a first colour appointment is mostly waiting and nobody explains that
  • Who this salon is not for, written out: same-day colour, extensions, and perms are off the menu, and a photograph never comes with a guaranteed match
  • Access facts a category almost never publishes: step-free entry and a measured 32-inch door, parking, which days smell like colour, how loud the room is, and that a silent appointment is available with any stylist
  • Stylists live as data, never as hardcoded components, so a chair changing hands is one edit rather than a redesign

Pages and surfaces

  • Home (the swatch ring)
  • Prices and services (with ceilings)
  • Book (the naming tool)
  • The chairs (three stylists, one page each)
  • Find us
  • Accessibility
  • Privacy
  • Terms
Under the hood

Real code. Real routes. Production ready.

  • The swatch ring is a custom WebGL2 signature on exactly one route, with three physically distinct lighting states, where the evening state collapses levels one through four to argue the business case rather than to decorate
  • Zero cross-origin requests in the browser, with no booking widget, review embed, map iframe, chat bubble, or font CDN
  • Motion runs on CSS scroll-driven timelines at 0 KB of JavaScript, authored end-state-first so reduced-motion and unsupported browsers receive the composed page rather than a degraded one
  • Cumulative layout shift measured at 0.00141 at 1440 and 0.0021 at 390, with the largest contentful paint landing on a text element
  • WCAG 2.2 AA, targeting the three failures that define this category by construction: tone-on-tone contrast, missing alt text on image-heavy pages, and empty icon-only links
  • Scroll rhythm scored before the redesign rather than after: eight sections with no two adjacent matching on surface, density, and width, and the level ladder moved to a dark interlude at 62 percent down
  • The estimator is pure functions over typed service data, so the pricing logic is readable without a browser
  • Stylists, services, prices, and availability are typed data, so a chair changing hands is a single edit

Stack

Next.jsReactTypeScriptTailwind v4WebGL2Vercel

Built honestly

Mica Hair Studio is a fictional business created to demonstrate the Trailhead package for the salon category. Alder Bend, BC does not exist, and neither do the stylists, the prices, the policies, the phone number, or the address. No real salon, stylist, client, or outcome should be implied. The build, the measurements, and the craft are real.

The entry package, aimed at the hard part

Mica is what I would hand a salon on the Trailhead: three custom page designs, real prices with ceilings, and one signature that does the explaining a stylist otherwise repeats twenty times a week.

Built as The Trailhead, from $2,000. Own It Monthly can spread the build over 12 payments, yours outright at the end.

More work

01 / 19