Barbershop Booking Bot — an FSM Appointment Flow
A Telegram booking bot for a barbershop: a step-by-step wizard (service → date → time → confirm) on a finite state machine, with generated free slots, reminders and an admin panel.
Problem :
A barbershop needed online booking that just works in Telegram — pick a service, a day and a free time, with no double-bookings and a reminder before the visit.
Solution :
A booking wizard on a finite state machine: service → date → time → confirm. Free slots are generated from working hours minus what’s taken and admin-blocked, past times are hidden, and the slot is re-checked right before booking to prevent doubles. A background task sends reminders.
My Role :
Everything — the FSM wizard, the slot engine, reminders and the admin panel.
Process :
aiogram 3 with FSM state; services, bookings and slots in SQLite; a bottom reply-keyboard menu and inline keyboards for the steps; a background reminders task inside the bot. No payments or LLM — the focus is clean business logic and state.
Outcome :
Hands-off scheduling: clients book in four taps, the shop sees today’s and the week’s bookings and can block slots. Shown here as rendered mockups of the real flow.
Tech Stack :
Python 3.11, aiogram 3 (FSM + MemoryStorage), aiosqlite (SQLite), and a background reminders task.



