Job Type: Freelance
Lizz Davies is a London-based bridal and occasion hairstylist. Her old site was WordPress on a page-builder theme, the usual result: bloated pages and a contact process that didn't match how she actually books clients. I rebuilt it from scratch in Next.js.
The rebuild loads in under half a second on a normal connection, around 22 requests total, images served as WebP through next/image instead of whatever the old theme was shipping. I checked this against the live site directly rather than quoting a number from memory.
The booking form is the actual product: service type, date, location, time, guest count, a free-text description of what the client wants, and up to five inspiration photos uploaded right in the form. It sits behind Google reCAPTCHA, confirmed live on the booking page, so the inbox isn't getting filled with bot submissions from a form that's specifically built to be found by strangers online.
I ran an automated accessibility audit against the live site instead of assuming Tailwind and semantic markup would cover it on their own: no critical or serious issues, a couple of moderate landmark-labeling items still on my list. Every image on the site ships with real alt text, not filler.
The portfolio splits into Bridal and Session categories with a Google review carousel on the homepage, but the part that actually mattered for the business was making the booking form fast, trustworthy, and resistant to spam, not how the portfolio grid looks.




