Сервис напоминаний о записи для бьюти-мастеров. Мастер ведёт расписание, а система сама подтверждает визиты и напоминает о них клиентам по нескольким каналам и по нарастающей.
Задача
Неявка клиента стоит мастеру пустого окна, которое уже нельзя продать. Обычные напоминания за час не работают: клиент видит сообщение, когда переносить поздно. Нужен каскад — заранее подтвердить визит, вовремя напомнить, а при отказе освободить слот, пока его ещё можно занять.
Что делает
- Расписание мастера с записями клиентов, статусами визитов и свободными окнами.
- Каскад уведомлений: подтверждение визита, напоминание накануне, напоминание в день визита. Каждый шаг настраивается отдельно — канал, срок, текст.
- Карточка клиента: контакты, история визитов, отметки о неявках.
- Аналитика: доля подтверждений, неявки, загрузка расписания.
- Каналы доставки: Telegram и электронная почта, задел на SMS.
Каскад в Telegram
Отдельная ссылка ведёт в демонстрационного бота — это вторая половина сервиса, та,
что видит клиент. Бот пишет сам: подтверждает визит заранее, напоминает по нарастающей,
а при отказе возвращает окно в расписание и уведомляет мастера. Молчание приводит к
повторному запросу и статусу «без подтверждения».
В работе каскад растянут на сутки, в демонстрации сутки сжаты в 40 секунд, и каждое
сообщение подписано тем, чему соответствует в жизни. Видны и журнал доставки по
каждому шагу, и настройка каскада: шаг можно выключить или сменить канал.
Как устроено
- Бэкенд на Node.js и Express, PostgreSQL как хранилище, миграции через node-pg-migrate.
- Отправка вынесена в отдельный обработчик: сообщения ставятся в очередь и отправляются идемпотентно, поэтому повторный запуск не создаёт дублей.
- Планировщик рассчитывает моменты отправки по каскаду и помечает выполненные шаги.
- Фронтенд на Vue 3 и Vite, интерфейс на русском.
- Журнал доставки: по каждому сообщению видно канал, время и результат.
Стек
Node.js, Express, PostgreSQL, Vue 3, Vite, Telegram Bot API, SMTP.
О демонстрации
По ссылкам ниже открываются кабинет мастера и бот. Кабинет — демонстрационная копия: расписание, карточка клиента, настройка каскада и аналитика, данные вымышленные, отправка сообщений и сохранение изменений отключены. Бот работает по-настоящему, но на вымышленном салоне и без сохранения визитов.