Work  /  Kibi Label

Kibi Label logo

A beauty studio that runs itself.

A site that books appointments while the esthetician is in a treatment room, and that the client updates herself without ever touching the code.

Type
Showcase site with an admin area
Sector
Skincare and esthetics — Chicoutimi
Booking
Online, 24 hours a day
My role
Solo, from design to deployment

The context

Kibi Label is a beauty and skincare studio based in Chicoutimi. Like most one-person service businesses, time is the scarce resource: every call answered during a treatment is an interruption, and every missed call is a lost appointment.

The site had to do three things: lay out the services clearly, show off the work, and turn visitors into confirmed appointments without going through the phone.

The real problem

The classic trap with a small-business showcase site is that it freezes on the day it ships. Prices change, a treatment gets added, a better photo comes along — and you have to call the developer back, wait, pay. Six months later the site lists the wrong prices and nobody dares touch it.

So my starting constraint was clear: the client had to be able to change everything herself, with no risk of breaking anything, and without me.

The solution

I built a static site, framework-free, fed by a headless CMS. The content lives in a separate admin area; the site fetches it on load. The client writes her copy, uploads her photos, adds a treatment or changes a price in a simple interface, and the site reflects the change.

Booking goes through an online booking widget, preceded by a booking policy acceptance dialog that I rewrote from scratch so it would be readable on a phone. The contact form works without a server.

The technical choices, and why

No framework. Semantic HTML, modern CSS (variables, Flexbox, Grid) and plain JavaScript. For a site this size, React or Vue would have added weight to download and a layer between Google and the content, without giving anything back. Performance and search came ahead of developer comfort.

A headless CMS (Sanity). I wrote custom content schemas modelled on the vocabulary of the trade — treatments, categories, prices — rather than on a technical structure. That is what makes the admin area understandable without training.

No-reload navigation where it counts. On the services page and the treatment guide, moving from the list to the detail goes through the browser History API: the page does not reload, but each treatment keeps its own address, shareable and indexable.

Images served from a CDN, lazy loading, attention to LCP. On a photo-heavy site, that is where perceived speed is won or lost.

Continuous deployment. A push to GitHub updates the site automatically. DNS is managed in the same place, which cuts down the number of accounts the client has to keep track of.

Key features

  • Online booking, available at any hour, with the booking policy accepted up front.
  • Treatment catalogue with categories, descriptions and prices, fully editable by the client.
  • The treatment guide: an editorial module pairing photos with explanations, built to answer questions before the first appointment.
  • Dark mode and light mode, remembered from one visit to the next.
  • Contact form with no infrastructure to maintain.
  • Local SEO: verification in Google Search Console, sitemap, tags and wording aimed at Chicoutimi and Saguenay.

What I took away from it

The most useful work was not technical. It was modelling the content the way the client thinks about it — her treatments, her categories, her vocabulary — rather than the way a database would file it. A badly named schema produces an admin area nobody dares open.

Second lesson: choosing to skip the framework takes more discipline, not less. With no structure imposed on me, holding it is my job.

The result

The site is in production. The client manages her content and her prices without any input from me, appointments are booked online at any hour, and every code update goes live automatically.

This is exactly the model I offer service businesses in the region under the The Base package.

A first meeting costs nothing.

Thirty minutes, no obligation, at your place or by video call. Reply within 24 hours, seven days a week.

Book a meeting