A hair salon in Sofia needed a website. I designed it, built it and shipped it, in Bulgarian and English, so the salon could run it without me.
Ashley Hairstyle wanted a site that reads the way the salon looks: editorial, high contrast, a magazine rather than a booking form. It also had to run without her calling me — her customers are Bulgarian, and prices change with the season.
The art direction is mine. GSAP carries it: smooth scrolling, a pinned stack from the hero into About, scrubbed reveals, a footer that rises while the page scales back. Route changes close two panels over the screen, timed so ScrollTrigger measures the new page correctly.
Splitting text character by character costs main-thread time on every reveal, and this page has many. Clip-path does it on the compositor instead, with the window reaching past the text so an italic descender is never clipped.
Services, the team and the twelve Kerastase rituals are custom types, each in Bulgarian and English; seed scripts on Prismic's Migration API imported the first 38 rather than anyone typing them in. Responses are cached server-side, so an outage still leaves the Bulgarian site Bulgarian.
A small admin panel writes to Cloudflare Workers KV, overriding the CMS prices the moment they are saved. Zero Trust gates it with one-time email codes, and validation knows the business rules: a ritual price has to resolve to one number, because the menu's "from" figure is the cheapest of them.
The salon has not needed me since handover: content lives in Prismic, and a price changes from a phone in seconds. Live in Bulgarian and English, ranking for the searches it is looked up by.
ashleyhairstyle.com