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 →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)