Dorota Gromala
A hair salon site that looks like the room it belongs to.
Problem
The salon lives inside other people's apps. The booking platform shows free slots, Instagram shows photographs, and neither has room for the standard of the work or for what separates this salon from the one down the road.
Solution
A bilingual site with an entrance animation and a services section where the tools take themselves apart as you scroll. The palette is not invented: sixteen colours were sampled from photographs of the salon itself. The booking button goes to the real profile.
What it does
- Two languages, switched without a reload
- An entrance animation with a loading bar
- Four hairdressing tools drawn as vectors, taking themselves apart on scroll
- Services: cuts, vegan colour, ombre, lamination, keratin
- A portfolio with a lightbox, and a reviews section
- A booking button that goes to the real profile
How it's built
- Next.js 16 with React 19; pages arrive rendered, so the copy is in the HTML before any JavaScript runs
- Two languages through next-intl, copy in pl.json and en.json
- GSAP with ScrollTrigger, driven by scroll position
- Hairdressing tools drawn as SVG with gold gradients, four types
- Tailwind 4 for the visual layer, TypeScript for everything else
- A static prototype built by script into one HTML file with everything inlined
How it looks
What it changed
- In progress: the site is not live yet, so there is no traffic and no booking figure to quote
- Today the salon exists only on other people's platforms: the booking app shows slots, Instagram shows photographs, and the standard of the work fits in neither
- The palette is not invented: sixteen colours sampled from photographs of the salon itself
Stack
- Next.js 16
- React 19
- next-intl
- GSAP + ScrollTrigger
- Tailwind 4
Story
The tool animation is drawn as vector art rather than played from video: four tools, each with its own gradient, assembling and disassembling in step with the scroll. The idea came from the client herself and sat in the brief beside the service list.