Credits: Photos from Unsplash, credited in the README
Description
Kayelux is a beauty salon and day spa template, built on Bootstrap 5. It has a soft pastel design with a large portrait hero, serif headings and coral accents, and the layout is responsive and mobile-ready. There are eight pages: home, about, services, gallery, pricing, blog, a single blog post and contact.
The home page has an about block, eight service categories with icons, featured services arranged around a portrait, counters, the team, a photo gallery with a lightbox, three spa packages, an appointment form, a client review slider and the latest posts. You will also find a blog with eight post cards, a blog post with tags, an author box, comments, a comment form and a sidebar search, and a contact page with a working contact form and a map that loads on click. Kayelux gives you a ready-made site for a beauty salon, spa or makeup studio.
What’s new in 3.0
Bootstrap 5.3.8 (the earlier release used Bootstrap 5.0.0-beta1), compiled from Sass together with the theme, and plain JavaScript. Swiper 14 replaces tiny-slider on the review slider, PhotoSwipe 5 replaces GLightbox in the gallery, and a small built-in module replaces AOS; the unused date picker is gone. npm run build (Dart Sass and esbuild) compiles one minified stylesheet and one script.
Lighter pages: the home page went from 14.5 MB and 52 requests to 1.7 MB and 38 requests, and all nine pages together from 63.9 MB to 8.4 MB. Every photo has an AVIF version with the JPEG as the fallback, real dimensions and lazy loading below the first screen, and the hero photo is preloaded.
No third-party requests: Poppins and Prata are self-hosted, the icon fonts are replaced by Lucide SVG icons with a distinct icon for every service and a 1 KB social-logo subset, and the contact page map is an OpenStreetMap map (no API key needed) that loads only when a visitor clicks it.
The appointment, contact and comment forms work: they validate the fields, send email through an included PHP handler with a spam trap, and show the result on the page. The blog search sends its query to the blog page.
Accessibility: a skip link, landmarks, one main heading per page, labelled links and form fields, a visible focus ring, and text and button colours that meet WCAG AA contrast, with readable captions and service texts on phones.
Titles, descriptions, social sharing tags and structured data on every page, real demo copy with eight blog posts and a sample article instead of placeholder text, and fixes for script errors on every page, Sass that did not compile and several typos.