Project Case Study

Joy Nails & Spa

A nail salon website for a Toronto studio on Eglinton West. Built on Next.js 16 with only three runtime dependencies and pre-optimized images, it loads fast on a phone and sends visitors straight into the salon existing booking system.

View Live Project →
Category
Local Business / Beauty Salon
Platform
Next.js
Client
Joy Nails & Spa
Type
Website (Local Business)
Role
Solo: information architecture, UI implementation, image pipeline, and technical SEO.
Goal
Present the salon services and atmosphere credibly, and move visitors into the existing booking system with as little friction as possible.
Scope
Home, About, Services, Lookbook, Testimonials, Contact, plus legacy route redirects, sitemap, and structured data.

Overview

Joy Nails & Spa is a nail and spa studio at 290 Eglinton Ave W, Toronto. The site opens with the promise the salon actually sells: "Indulge in Beauty. Relax in Luxury. Discover premium nail care, soothing massages, and rejuvenating facials in Toronto's serene spa retreat."

For a local salon, a website has one job: convince someone browsing on their phone that this is the right place, then get them into the booking system. Everything in this build serves that path.

The Approach

Don't replace the booking system

The salon already runs on Milano Cloud, and their staff already know it. Rebuilding booking would have introduced a second source of truth for appointments and a new system for the team to learn, adding cost and risk with no upside for the client.

So the site links out to the existing booking portal, and does so from everywhere it might be wanted: the hero, the header, the footer, the mobile nav, the services section, and the Dazzle Dry promo. The integration is a link, and that is the correct amount of engineering.

Don't ship a CMS

Salon content (services, hours, address, testimonials) changes rarely, and the client's requests come through SERVITH. A CMS would have added hosting cost, an admin surface, and an attack surface to solve a problem that doesn't exist at this scale. Content lives in typed configuration instead, so a change is a small edit and a redeploy.

What This Means for the Business

*

Fast on a phone: The site carries almost no extra code, so it opens quickly on mobile data while a customer is choosing between nearby salons.

*

A gallery that loads quickly: Photos are optimized before they go live, so the lookbook stays fast without any extra servers to run.

*

Easier to find in local search: Search engines are given the salon's address, phone, service area, and social profiles, and shared links show a proper preview.

*

Old links still work: Visitors following links to the old portfolio pages land on the new lookbook instead of an error.

*

Business details that always match: The address, phone number, and booking link are defined in one place, so one update changes them everywhere on the site.

What This Case Study Demonstrates

*

Knowing what not to build: no booking rebuild, no CMS, no analytics bloat

*

Integrating with the systems a small business already runs rather than displacing them

*

Treating performance as a conversion concern for mobile local search

*

Doing local SEO properly: structured data, canonical metadata, and redirect hygiene

*

Delivering a fast, credible storefront on a dependency surface of three packages


Live: https://joynailsnspa.ca

Role: Solo delivery (IA → UI → image pipeline → technical SEO)

PortalGet a Free Quote