Telegram bot for online nail appointment (Python, aiogram 3)
Telegram bot for automating client appointments for manicure with an admin panel and reminder system.
Main task: Replace manual record-keeping in the messenger with a full-fledged booking system featuring an interactive interface - the client independently selects the service, date, and time, while the master receives notifications and manages the schedule through the admin panel.
What has been implemented:
- Complete FSM flow for booking: service selection → inline calendar → time selection → entering name and phone → confirmation
- Admin panel: management of working days, time slots, services, and their prices (CRUD)
- Inline calendar with month navigation support, blocking of past and closed dates
- Automatic reminders to clients 24 hours and 2 hours before the visit (APScheduler)
- Instant notifications to the admin about new bookings and cancellations with the ability to take action directly from the message
- Phone validation (regex, normalization to +380XXXXXXXXX), protection against double booking (race condition on is_booked)
- CRUD operations with services through the admin panel: adding, changing prices, deleting with automatic transliteration of keys
- Handling edge cases: blocking repeat bookings, notifying the client upon cancellation by the admin, try/except for blocked bots
Technologies: Python 3.11+, aiogram 3.25, Supabase (PostgreSQL), APScheduler, python-dotenv, FSM (Finite State Machine), Inline Keyboards, CallbackData factories
Main task: Replace manual record-keeping in the messenger with a full-fledged booking system featuring an interactive interface - the client independently selects the service, date, and time, while the master receives notifications and manages the schedule through the admin panel.
What has been implemented:
- Complete FSM flow for booking: service selection → inline calendar → time selection → entering name and phone → confirmation
- Admin panel: management of working days, time slots, services, and their prices (CRUD)
- Inline calendar with month navigation support, blocking of past and closed dates
- Automatic reminders to clients 24 hours and 2 hours before the visit (APScheduler)
- Instant notifications to the admin about new bookings and cancellations with the ability to take action directly from the message
- Phone validation (regex, normalization to +380XXXXXXXXX), protection against double booking (race condition on is_booked)
- CRUD operations with services through the admin panel: adding, changing prices, deleting with automatic transliteration of keys
- Handling edge cases: blocking repeat bookings, notifying the client upon cancellation by the admin, try/except for blocked bots
Technologies: Python 3.11+, aiogram 3.25, Supabase (PostgreSQL), APScheduler, python-dotenv, FSM (Finite State Machine), Inline Keyboards, CallbackData factories