Overview
“Nails that bite back — custom, always.” Nadya runs the studio solo, so the site had to do two things: show the work well enough to sell it, and take a booking without her having to chase anyone through DMs.
Chrome, charms, thorns, editorial sets — the design leans dark and neon-pink, and the build had to keep that loud without getting slow. It’s Astro 7 + Tailwind CSS v4, statically generated, five pages, no runtime framework.
🛠️ What I Did
- Built the whole site —
/·/looks·/menu·/book·/contact— in Astro 7 with Tailwind v4 - Looks gallery with category and shape filtering (chrome, gothic, 3D charms, editorial), plus saved looks that persist per device via
localStorage - Service menu with pricing and durations — full sets, fills, press-on drops, removal and repair — and add-ons that adjust both price and time
- Two-step booking flow:
/menuhandles the whole selection step (service, add-ons, date, time) and carries the choice to/bookas query params, so the second page renders only the details form. The same “Your set” summary component runs on both - Wrote the date and time logic: 90 rolling days and half-hour slots from 8:00am to 9:00pm, rebuilt on the client at load so a statically built page never offers a date that has already passed
- Nothing is hard-blocked — the customer picks whatever suits them, and a soft “outside her usual hours, she’ll confirm” note appears rather than a locked-out calendar
- Built a small component library on top of the design tokens — Button, Badge, Tag, Card, Checkbox, Field, Select, LookTile, ServiceRow, Marquee — with the design system’s colours, type scale, radii, shadows and easings declared in Tailwind’s
@theme - Composite values Tailwind has no namespace for — gradients, neon glows, glass blur — live as CSS custom properties and get used through arbitrary values
🗂️ Built to Hand Over
All the copy and content — looks, services, add-ons, slots, nav, stats, marquee lines — lives in one site.ts file. Adding a look or a service is a one-line edit there, with no component changes. Nadya’s working days and hours are a single object; everything downstream follows from it.
That was the point: a solo studio owner shouldn’t need a developer to add a service or change a price.
✨ Results
- A fast, static site that carries the brand’s attitude without paying for it in load time
- Booking that fits how she actually works — no deposit, no forced calendar, she confirms
- Content and pricing she can maintain herself from a single file
- Direct WhatsApp handoff for anything the form doesn’t cover