Project case study
Salon Spa Sites: a Nuxt platform for beauty professionals
Salon Spa Sites helps beauty professionals launch an online presence using industry-specific templates. My work on the platform spans Nuxt interfaces and backend integrations for a repeatable website creation experience.
By Walelgn Dagne · Nuxt & Vue.js developer
The product problem
A salon website needs to communicate a business’s services and identity. Building every site from scratch makes that a separate development project for each business. Salon Spa Sites addresses this with a SaaS product built around templates and automated provisioning.
The product brings together two needs: an experience suitable for beauty professionals and a technical foundation that can support repeated website launches.
My contribution
I engineered the website platform with Nuxt 3, TypeScript, Tailwind CSS, and Nuxt UI, alongside backend integrations using Fastify, PostgreSQL, and Prisma. The work connects the visible website experience to the systems supporting the product.
Industry-specific templates and automated provisioning are central features of the platform. They make the product a relevant example of my work on reusable frontend interfaces and SaaS workflows.
The technical focus
This project combines template-driven presentation with application functionality. Nuxt and the UI stack support the frontend, while Fastify, PostgreSQL, and Prisma form the backend stack. That combination requires attention to the boundary between the interface and the data it uses.
For a team evaluating my work, the relevant experience is building a Nuxt product where multiple websites share a common product foundation. My broader work at X Enterprises also includes Nuxt Layers and internal npm packages for sharing logic and components across sites.
Explore the product
The public product is linked below. It demonstrates the type of SaaS and website platform work in my portfolio; for a discussion of a similar build, share your requirements and the parts of your stack already in place.