01 · The problem
A barber’s phone never stops.
Most barbers in the Balkans don’t have a booking app. Appointments live in a paper book, or scattered across Instagram, WhatsApp, iMessage and phone calls. So they answer with a client in the chair, and they’re still replying after closing time.
There’s no privacy in it either. Everyone who has ever sat in that chair has their personal number, so work never really ends.
Someone who has never used an app like this needs to see what they’re missing: a day where the phone stays quiet and the appointments still arrive.
02 · The feeling
It had to feel like iOS.
Everyone loves how iOS feels and how smooth it is. I wanted that same feeling here, for a barber between two clients and for a client booking from the couch. So premium and seamless were requirements from the first screen.
- One decision per screen. Barber, then service, then time. Nothing else competes for attention.
- One sheet system for everything. Confirmations, pickers, dates, errors: they all rise from the bottom and behave the same way, the way they do on iOS.
- Quiet by default. Graphite and one soft accent, so the only thing that stands out is what you came to do.
03 · Booking
Three taps, and the sentence writes itself.
The screen writes a sentence as you tap. Pick a barber, a service and a time, and it reads “Nermin does my fade + design, tomorrow at 9:00”, the way you’d say it to a friend.
Regulars don’t even need that. The home screen suggests their usual cut with the first free slot and one button to book again, and a small tracker shows how much their hair has grown since the last visit. Then reminders go out at 18:00 the day before and two hours before the appointment, without anyone sending a message.




04 · The barber’s side
The whole day on one screen.
The same app switches between client and salon with one tap. On the salon side, the schedule answers the only question that matters between two haircuts: who’s next, and where the free slots are.
Clients join with a salon code or a QR on the mirror, so bookings stop going through the barber’s personal number. Behind that sits what a real shop needs:
- Appointments for people without the app. A walk-in or a phone client goes in as a guest, in a few taps.
- A limit on no-shows. After a number the salon sets, a client can’t book in the app anymore and has to call.
- The business at a glance. Earnings by week and by barber, team schedules and recurring clients.



05 · Bringing clients back
A quiet way to bring clients back.
Clients drift away without anyone noticing, and chasing them one message at a time is the work Chairo is meant to end. So the barber gets one screen for it. Anyone who hasn’t been in for five weeks or more, and has nothing booked, appears on a list. One tap reminds that person, and another reminds everyone on the list.
- Only people who said yes. Reminders go to clients who turned on offers from the salon. Everyone else stays off the list.
- One reminder per absence. A client gets one, and the next only comes after they’ve been back and another five weeks have passed.
- A limit on announcements. The second tab sends a short message, such as holiday slots filling up, to all clients or the top 20 by spend. Each salon gets two of these every 30 days.



06 · Iteration
I kept going after the first version worked.
The design file holds 232 phone screens. A lot of them are empty states and error screens. The rest is improving what was already there, because many screens in the app had become too complex and needed simplifying.







07 · Build
From the database to the push notification.
About a month of development, then real testers and a round of optimising everything they touched. In under two months it was ready for store review, with nobody else on the project.
Under the hood
- Expo
- React Native
- Supabase
- Resend
- Cloudflare
- Database and server functions on Supabase, behind bookings, schedules and teams.
- Push reminders at 18:00 the day before and two hours before each appointment, plus email through Resend.
- Deep links on Android, so a shared salon link opens the right place in the app.
- Separate development and production environments, so testing never touches real bookings.
- The legal side too: privacy policy, terms of use, consent history and account deletion.
08 · Marketing
Then I had to convince barbers.
A finished app doesn’t sell itself, especially to people who’ve run their shop from a paper book for years. So I made the launch videos too. Each one starts from something a barber or a client already knows too well.
The lines work the same way: “You cut. Chairo books.”, “The work stays in the salon.” and “Remind them first.” The urgency comes from recognising your own day and realising there’s an easier way.
The messages video at the top of this page is the best of them. These two made the cut with it.
09 · The trash
Two videos I threw away.
I don’t want to put out slop, so these went in the trash. They’re some of the iterations I worked through until I got to the few good ones.
10 · Where it is now
Ready for review, and early access is open.
Chairo is ready for store review, and chairo.app is collecting signups for early access. It’s early, so there are no usage numbers here yet. I’ll add real ones as barbers start using it.

