The staff app
Built for a stylist with one free hand.
Used all day on phones and desktops. It is live, so a broken release costs real appointments.
1
2
3
4
Interactive screen · Hover notes or scroll to inspect
Schedule
The day at a glance.
Designed for quick glancing between chairs with zero horizontal scrolling.
-
1
Category colors for Hair Cut, Color, Perm, Treatment and Styling.
-
2
Off-shift shading shows who is not working.
-
3
Overlap on purpose. Staff can double-book; clients cannot.
-
4
Attendance chips flag clients with missed visits.
Appointment panel
The whole visit, one tap from the chair.
The stylist taps an appointment and sees client history, attendance flags, and mixing records without retyping.
-
1
Attendance warning with the last missed visit.
-
2
Itemized ticket with a running total.
-
3
Formula notes entered at checkout resurface next visit.
-
4
Checkout opens without retyping anything.
1
2
3
4
Practice data, invented client · In-device ticket scroll

Messaging
See the exact text before it goes.
Text, email or both, with a live preview of exactly what will be sent.
Checkout
A till that fits the way the studio is paid.
- Loyalty points, ready for the October launch.
- Private formula record saved with the ticket, never printed on the receipt.
- Cash, split or Other / external for companion tickets and comps.
- Square Terminal for card, tap or chip.
The public side
Booking that knows the studio.



Pick a stylist or "Any stylist, soonest open". Build a visit. Ask to be fitted in when nothing fits. Clients cancel or reschedule from a private link, up to 24 hours ahead.
About 72 overlapping appointments in real history
Decision 1 of 4
Staff may double-book. Clients may not.
A quick cut inside a color's processing time. Staff can place an overlap on purpose. The public form cannot.

Decision 2 of 4
The waitlist is triaged by a person.
A freed slot is not offered automatically. Staff see who wanted it and ring them.
- A slot opensSomeone cancels or moves.
- System prompts staff"Here is who wanted this."
- Staff calls the guestOnly if it works for the studio.
- Booked, or next nameThen the next guest on the list.
Rejected: automatic offers. They promise things the studio has not agreed to.
Decision 3 of 4
The schedule answers instantly.
A moved card used to snap back for 6 to 18 seconds. Now it moves at once and saves in the background.
Illustrative timeline, not to scale.
Request time, test server
Test server with a deliberately slow mail server. Bars to scale; the second is too thin to see, so a marker is drawn.
Decision 4 of 4
The interface says only what is true.
A receipt used to say "Auto-sent" whether or not the email went out.
Shown whether or not the email went out.
Then the address, date and time. If it fails, it says so and offers Send.
Mock-ups with an invented address, redrawn from the real change.
Same rule everywhere: the badge says Offline, not Live, when the server cannot be reached.
Reports
Reports match how the salon thinks.


Money counts on the day it was paid, per location. Yesterday is one tap.
Smaller decisions
Smaller decisions.
Design system
Quiet luxury, kept quiet.
One stylesheet for the staff app and the public pages.
Product type and components
Jost for body. Hairline borders, uppercase labels, solid ink buttons.
How it was built
Never deploy by hand.
Two early mistakes led to one rule. Every release now follows the same path.
- Check health25 read-only checks on the live site.
- Add new filesBy exact name, nothing overwritten.
- Swap pages lastOnly after every file is confirmed.
- Check againIn a real browser.
- Roll back by itselfIf any check fails. A one-line undo is kept.
