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