Дать клиенту выбрать услугу и время, а мастеру управлять расписанием, переносами и отменами. Я создал продукт целиком, включая Telegram Mini App, backend и интерфейсы мастера и студии.
Логика записи
Клиент выбирает время. Пока он подтверждает запись, слот временно занят. При переносе или отмене устаревшие напоминания убираются из очереди.
01Выбор времени
02Удержание на 5 минут
03Подтверждение
04Напоминание в очереди
Схема работы продукта. Время на иллюстрации приведено для примера.
Ключевые решения
01
Одно время, несколько клиентов
Ограничение
Несколько человек могут одновременно выбрать один слот. Нужно учитывать длительность услуг, подготовку и перерывы.
Решение
Реализовал удержание слота на пять минут и обработку повторных запросов без дублей. Добавил ограничение PostgreSQL для защиты расписания от пересечений.
Что это даёт
Пока клиент подтверждает запись, слот занят. Одновременные и повторные запросы не создают пересекающиеся записи.
02
Напоминания после переноса
Ограничение
После отмены или переноса старое напоминание становится неактуальным. Временные ошибки доставки требуют повторных попыток.
Решение
Вынес отправку в очередь с отдельным worker. При переносе или отмене убираю устаревшие задания; учитываю тихие часы и повторные попытки доставки.
Что это даёт
Напоминания связаны с актуальным состоянием записи. Окончательные ошибки отправки видны в админке.
Мой вклад
Сам разработал продукт от сценариев и интерфейсов до backend и развёртывания.
Реализовал удержание слотов, защиту расписания от пересечений и очередь уведомлений.
Стек
TypeScript
Vite
PostgreSQL
Redis
Docker
Telegram Mini App
Статус проекта
Кейс обновлён 20 октября 2026
Развернул MVP. Дорабатываю интерфейсы клиента, мастера и студии. Перед пилотом проверю основные сценарии и доставку уведомлений на реальных устройствах.