W WeKnowSalons Design Review
The booking widget · v0 wireframes

Ships greyscale.
Themes per salon.

One lightweight booking widget for every salon site we build. It opens with who — your regular tech, stylist, or barber — then the service, then a time. Neutral by default; each salon's brand drops in as theme tokens. No payments.

Who → what → when Embeddable iframe Multi-tenant No payments
Step 1 / 4
Who would you like?
Book with your regular — or let us match you.
Anyone availableSoonest openingfastest
TLTina L.Gel & nail art
KPKim P.Pedicures
Powered by WeKnowSalons
Toggle the theme — same widget, salon's brand.
01 · The customer journey

Who, then what, then when

People book around a person, so the funnel starts there. Four taps to booked — no account, no fluff. Availability is computed live for the chosen person, and the database refuses a double-booking even if two people tap the same slot at once.

Who would you like?
AnyoneSoonest
TLTina L.
KPKim P.
Step 1WhoPick a person or "Anyone." Per-salon label: Tech / Stylist / Barber.
Choose a service
Gel Manicure
60 min
$35
Spa Pedicure
75 min
$70
Dip Gel Mani
60 min
$55
Step 2WhatOnly services that person actually offers. Duration drives the slot length.
Pick a time
SMTWTFS 2829301234
10:0010:4511:30 1:152:003:30
Step 3WhenReal openings only — closed days, time off & taken slots removed.
Your details
Maria Alvarez
(856) 555-0148
maria@email.com
Step 4Details & confirmGuest checkout — no account. Opt-in toggle for text reminders.
You're booked
Confirmation sent to your email.
WithTina L.
ServiceGel Manicure
WhenJul 3, 10:45 AM
DoneConfirmedEmail now; 24-hour reminder later (text optional, per salon).
02 · Drop-in anywhere

One snippet, any salon site

The widget lives on our platform and embeds as a style-isolated iframe that auto-resizes to its content. It can't break the host site's layout, and the host site can't leak into it. This is how Dolce replaces its current third-party booking box.

dolcenails.com/book
Book online

Reserve your chair

Our widget · iframe
Step 2 / 4
Choose a service
With Tina L.
Gel Manicure
60 min
$35
Luxury Spa Pedi
90 min
$99
Powered by WeKnowSalons
The whole install
<!-- paste once, anywhere -->
<iframe
  src="book.weknowsalons.com/dolce"
  style="width:100%;border:0"
></iframe>

Or a "Book Now" button that links straight to the hosted page — for salons with no website yet.

Lightweight

Loads fast, stays small

No heavy framework shipped to the salon's page — it works the same on every site we build.

Isolated

Can't break the host

The iframe sandboxes styles both ways. Auto-resize keeps it flush, with no inner scrollbars.

No payments

Out of PCI scope

Salons keep their own card processor. We never touch money, which keeps it simple and safe.

03 · Brand kit

Neutral by default, themeable by token

The platform's own identity is deliberately quiet — clean greyscale, ink-on-paper. Every color, radius, and font is a named token, so onboarding a salon means swapping a small set of values, not touching the UI.

Default palette · greyscale
Paper
#FBFBFC
Page ground
Surface
#FFFFFF
Cards
Mist
#F3F4F6
Fills
Line
#E3E5E8
Hairlines
Slate
#767C83
Muted text
Graphite
#41464C
Body alt
Ink
#17191C
Text · primary action
The theming model · same tokens, different salon
TokenNeutral defaultDolce overrideDrives
--accent#17191C#6B2737Buttons, active states
--bg#FFFFFF#FFFAF5Widget background
--surface#FBFBFC#FAF6F1Rows, fields
--line#E3E5E8#ECE0D4Borders
--radius10px6pxCorner softness
--displaySystem UIFraunces serifHeadings, salon name

Stored as a small theme record on each salon and injected as CSS variables at load — the exact mechanism in the live toggle at the top of this page.

Typography
Display / 600Book online in under a minute
Heading / 600Who would you like?
Body / 400Clean, readable UI text for labels, help, and confirmations.
Mono / utility10:45 AM · $35 · /book/[salon] · --accent

A clean grotesque carries the interface; a monospace handles times, prices, tokens, and the embed snippet — the "engineered & embeddable" signal. A salon's own display face (e.g. Dolce's Fraunces) overrides headings via the --display token.

Core components · neutral
Buttons
ContinueBackSkip
Time slots
10:0010:4511:302:00
Service row
Gel Manicure
60 min · up to 3 weeks wear
$35
Input field
(856) 555-0148
04 · Behind the widget

The owner's calendar & your control room

Two protected areas in the same app. The salon dashboard opens on a calendar — the receptionist's home base — with one-time setup for staff, services, schedules, and hours. The agency admin is where you onboard and manage every salon.

Salon dashboard — /dashboardOpens on today's calendar, one column per staff member. Each salon only ever sees its own data.
Dolce's Nails & Spa/dashboard/calendar

Mon, Jun 30

Today+ Add
TL Tina L.
KP Kim P.
MT Mai T.
10:00
Maria A.
Gel Manicure · 60m
10:30
J. Chen
Spa Pedicure · 60m
11:00
Walk-in
Polish · 30m
11:30
12:00
R. Okafor
Acrylic Full · 60m
Set it up once
Staff
Your team

Add each person, their photo, and what they do. Per-salon label: Techs, Stylists, or Barbers.

Services
Menu & prices

Name, duration, price (or "from"), and which staff offer it. Seeded from the salon's current menu.

Schedules
Who works when

Per-person weekly hours and days off — drives each person's real availability.

Hours
Opening hours

Salon-wide hours, holidays, and closures. Staff schedules fall back to these.

Agency admin — /adminYour view across every salon. Onboard a salon = one row + a theme, no deploy.
WeKnowSalons · Admin/admin/salons

Salons · 3 active

+ Add salon
SalonSlugPlanBookings / 30dStatus
Dolce's Nails & Spadolce$100/mo312Active
Sharp & Co. Barberssharp-co$100/mo204Active
Lotus Hair StudiolotusTrialOnboarding
05 · If this direction lands

What happens next

This is a wireframe, not the build. Once you're happy with the who→what→when flow, the owner calendar, and the greyscale default, here's the order I'd take it in.

01

Write the booking-system spec

The screen-by-screen behavior, the data it needs, and the rules (availability, no double-booking) — agreed before any app code.

02

Port this into the app as live pages

A navigable /wireframes + /brand in the repo, same pattern you used for Dolce, so the design lives in code.

03

Build the foundation + booking funnel

The themeable widget shell, salon-slug → theme lookup, live availability, and the anti-double-booking guarantee.

04

Owner calendar & setup, then embed into dolcenails.com

Replace the current third-party booking box with our widget as the first real salon.

A few calls I'd want from you first

  • Client identity — pure guest checkout (name + mobile + email, no login), or optional accounts so regulars can rebook faster?
  • After booking — can clients cancel/reschedule themselves from a link, or do they call the salon?
  • Owner setup — a guided first-run wizard (staff → services → hours), or just editable settings pages they fill in at their own pace?