Most salon owners get quoted $1,000 to $2,000 for a basic website, or pushed onto a $30/month booking app. That always struck me as absurd for what is, fundamentally, one page with a booking button. So I built the whole thing as a single index.html file and open-sourced it (MIT).
The constraints I gave myself
- One file. No npm, no framework, no build step, no database. A salon owner with zero technical skills has to be able to edit it in Notepad and host it free.
- A booking widget that actually works with no backend and no paid platform.
-
SEO and AI-search ready out of the box (proper meta tags +
LocalBusinessJSON-LD), because the whole point is for the salon to get found.
The booking trick: WhatsApp as the backend
The hard part with "no backend" is bookings. A booking platform wants a database and a monthly fee. But almost every salon already runs on WhatsApp. So the widget lets the client pick a service, day, time and name, then opens a pre-filled WhatsApp chat to the salon:
Hi Bloom Beauty Studio, I'd like to book: Hair Cut & Blow-Dry ($45) on Fri at 10:30 AM. Name: Jordan.
The salon confirms in the chat. No database, no per-booking fee, and it meets clients where they already are. The "already booked" striped slots are illustrative; you swap in a real calendar later if you grow.
Everything is driven by one config block
To make it editable by a non-coder, every business-specific value lives in a single object near the bottom of the file:
var SALON = {
brand: "Your Salon Name",
contact: "https://wa.me/15551234567", // your WhatsApp, digits only
hasWhatsApp: true, // false -> use a tel: number instead
services: [
{ name: "Hair Cut & Blow-Dry", price: "$45" },
{ name: "Balayage", price: "$160" },
],
hours: { // [open, close] 24h, null = closed
Sun: null, Mon: [9,19], Tue: [9,19], Wed: [9,19],
Thu: [9,20], Fri: [9,20], Sat: [9,17]
}
};
Change those values, double-click the file to preview, and drop it on GitHub Pages / Netlify / Vercel. Live in about five minutes.
Make it a barbershop
Swap three CSS variables and the service names:
/* barbershop palette */
--rose:#c8a24a; --rose-deep:#a8842f; --plum:#23201b;
β¦then change the hero image and the services (Fade, Beard Trim, Hot Towel Shave). Same engine, different vibe. It also works for nail bars, beauty salons, and lash/brow studios.
What's in the box
- Mobile-first responsive layout
- Services & prices grid, gallery, Google reviews, opening hours, Maps embed
-
LocalBusinessstructured data so Google and ChatGPT/Perplexity understand the business - Zero dependencies, loads in under a second
It's MIT licensed, so use it for client work, fork it, ship it. If you run a salon and would rather not touch any code, the landing page explains a done-for-you option too.
Repo: https://github.com/atlashey-collab/salon-website-template β a star is appreciated if it's useful. Happy to answer questions about the no-backend booking approach in the comments.
Top comments (0)