BJ Eyebrow Threading

A single-page salon site built on Astro and Tailwind CSS, backed by a real design system so a second page costs an hour of work instead of a week.

On the record

What was built, and for whom.

Client
BJ Eyebrow Threading
Industry
Salons and personal care
Scope
Single-page site with a custom design system
Design system
Tokens, component patterns, and documented interactive states
Local search
Google Business Profile set up alongside the page
Stack
Astro, Tailwind CSS
Location
New England
BJ Eyebrow Threading on a phone, top of the page. A photograph of the salon floor sits behind the name and the line Precision brow threading and beauty services, with a Call To Book button, the phone number under it, the notes Walk-ins welcome, Cash and Venmo and Free parking, and the Shrewsbury street address. Everything needed to book is on the first screen, with nothing to scroll past first.
Captured at a 390 pixel phone width.
The build

The situation

A threading salon with a straightforward set of jobs to do on the web: say what the services are, say where the salon is and when it is open, and get somebody to call or walk in. That is the whole list.

The temptation on a project like this is to sell eleven pages because eleven pages sounds like more value. It is not. A page that exists to fill a navigation slot is a page that dilutes the one page anybody actually reads.

What was actually needed

One page, with a tap-to-call button above the fold on a phone. Everything a client needs before calling or walking in fits comfortably in a single scroll.

Speed, because this is a phone-first audience. A threading visit is decided in a spare minute, not in a research session.

Somewhere for the business to grow into. A one-page site should not be a dead end that has to be thrown away when a second page is needed.

What we built

A single-page static site on Astro with Tailwind, and, behind it, a real design system: tokens for color, type scale, and spacing, component patterns for every section type, and documented states for every interactive element.

That is more infrastructure than one page needs, and it was a deliberate decision. The design system is why the second page will take about an hour rather than a week, and why a change to the type scale takes one edit instead of forty.

The work started with content structure: services, what each one is and what it costs, where the salon is and when it is open, the walk-in policy, and the phone number, written before any layout existed. Then a token set and a component library, small but real, not utility classes sprinkled until it looked right. Then a single static page on Astro, with no client-side framework, no hydration, and nothing shipped to the browser that did not need to be there. The phone number is a tap-to-call link on the first screen and again beside every service, with the walk-in policy next to it, because that is how this salon takes clients. And the Google Business Profile, which is what most new clients see first, was built with the same care as the page.

What we deliberately did not do

We did not build a blog. Nobody was going to write it, and an abandoned blog is worse than no blog.

We did not add a client-side framework. There is no interactive state on this page that needs one. Shipping a framework here would have been decoration.

We did not build a gallery of every service. A short, honest set of images beats a padded one, and padding is visible.

Check it yourself

The site is live at bjeyebrowthreading.com. Open it on a phone and time how long it takes to become usable, then run the URL through PageSpeed Insights.

As with every case study here, we are not publishing a before-and-after number, because we did not baseline the previous state under controlled conditions. The current number is real and it belongs to Google, not to us.

Sometimes one page is the right answer.

Send us what you have. If the honest recommendation is one page and a booking link, that is what you will hear. Twenty minutes, and it is not a pitch.

Book a call

The form takes about 40 seconds. Two steps, five questions.

Or email contact@keyresolutionsit.com and a person replies.