Hanaflo
All-in-one booking and management platform for beauty salons.
The problem
A salon needs a public booking page, a calendar the staff will actually use, and card payments landing in their own account. Three tools means three calendars, and Saturday double-books.
- Booking page
- Separate calendar
- Saturday double-books
What I built
- 01One deployment hosts many salons, each with its own public storefront
- 02A slot is computed from staff, room, hours and the service
- 03Card payments settle into that salon's connected Stripe account
Features
Storefront
The salon's public page: photography, prices, stylists, hours.
Booking
A slot against that salon's real working hours.
Staff calendar
The week the team actually works, with the bookings on it.
Catalogue
Services, variants and add-ons behind the storefront.
1 of 5
The hard part
Availability
A bookable slot is the intersection of six things. Get it wrong and nothing throws. It quietly double-books somebody's Saturday, and they find out when two customers arrive for the same chair.
Stack
Frontend
- Next.js
- React
- TypeScript
- Tailwind
Backend
- Convex
Auth
- Clerk
Payments
- Stripe Connect
Platform
- pnpm
- Vercel




