Telegram-бот онлайн-запису на манікюр (Python, aiogram 3)
Telegram-бот для автоматизації запису клієнтів на манікюр з адмін-панеллю та системою нагадувань.
Основна задача: Замінити ручне ведення записів у месенджері на повноцінну систему бронювання з інтерактивним інтерфейсом - клієнт самостійно обирає послугу, дату та час, а майстер отримує сповіщення та керує розкладом через адмін-панель.
Що реалізовано:
- Повний FSM-флоу запису: вибір послуги → inline-календар → вибір часу → введення імені та телефону → підтвердження
- Адмін-панель: керування робочими днями, часовими слотами, послугами та їх цінами (CRUD)
- Inline-календар з підтримкою навігації по місяцях, блокуванням минулих та закритих дат
- Автоматичні нагадування клієнтам за 24 год та за 2 год до візиту (APScheduler)
- Миттєві сповіщення адміну про нові записи та скасування з можливістю дії прямо з повідомлення
- Валідація телефону (regex, нормалізація до +380XXXXXXXXX), захист від подвійного бронювання (race condition на is_booked)
- CRUD-операції з послугами через адмін-панель: додавання, зміна ціни, видалення з автоматичною транслітерацією ключів
- Обробка edge cases: блокування повторного запису, сповіщення клієнта при скасуванні адміном, try/except для заблокованих ботів
Технології: Python 3.11+, aiogram 3.25, Supabase (PostgreSQL), APScheduler, python-dotenv, FSM (Finite State Machine), Inline Keyboards, CallbackData factories
Основна задача: Замінити ручне ведення записів у месенджері на повноцінну систему бронювання з інтерактивним інтерфейсом - клієнт самостійно обирає послугу, дату та час, а майстер отримує сповіщення та керує розкладом через адмін-панель.
Що реалізовано:
- Повний FSM-флоу запису: вибір послуги → inline-календар → вибір часу → введення імені та телефону → підтвердження
- Адмін-панель: керування робочими днями, часовими слотами, послугами та їх цінами (CRUD)
- Inline-календар з підтримкою навігації по місяцях, блокуванням минулих та закритих дат
- Автоматичні нагадування клієнтам за 24 год та за 2 год до візиту (APScheduler)
- Миттєві сповіщення адміну про нові записи та скасування з можливістю дії прямо з повідомлення
- Валідація телефону (regex, нормалізація до +380XXXXXXXXX), захист від подвійного бронювання (race condition на is_booked)
- CRUD-операції з послугами через адмін-панель: додавання, зміна ціни, видалення з автоматичною транслітерацією ключів
- Обробка edge cases: блокування повторного запису, сповіщення клієнта при скасуванні адміном, try/except для заблокованих ботів
Технології: Python 3.11+, aiogram 3.25, Supabase (PostgreSQL), APScheduler, python-dotenv, FSM (Finite State Machine), Inline Keyboards, CallbackData factories