КтоПридёт
CRM и онлайн-запись для специалистов, работающих по записи
КтоПридёт — SaaS для тренеров, бьюти-мастеров, массажистов и репетиторов: клиенты записываются сами через Telegram, MAX или веб-ссылку, а специалист получает напоминания, абонементы и учёт денег. Продукт сделан целиком: Go-бэкенд, кабинет и мини-приложения на React, платежи, CI/CD с e2e-тестами.
- Статус
- В продакшене
- Период
- Июль — октябрь 2026
- Формат
- Собственный продукт
- Роль
- Продукт, архитектура, бэкенд, фронтенд, инфраструктура

- эндпоинтов API
- ≈158эндпоинтов API
- миграции базы
- 32миграции базы
- строк Go и TypeScript
- ≈25 тыс.строк Go и TypeScript
- коммита
- 153коммита

Задача
Специалисты, которые работают по записи, теряют деньги на прогулах и ведут клиентов в переписке и таблицах. Нужен был простой кабинет, где клиенты записываются сами, а специалист каждое утро видит, кто придёт и сколько он заработал.
Что сделано
- Календарь на день и неделю, услуги с длительностью и вместимостью, групповые занятия, отметки «пришёл / отменил / не пришёл»
- Запись тремя путями: Telegram Mini App, мини-приложение в MAX и веб-ссылка без мессенджера
- Напоминания и утренний дайджест «кто придёт сегодня» в Telegram, MAX и по SMS
- Абонементы с балансом и аналитика: выручка, доля неявок, новые клиенты
- Возврат клиентов: система находит «спящих» с остатком абонемента и пишет им по анти-спам правилам
- Чат специалиста с клиентом в реальном времени
- Импорт базы из YCLIENTS, DIKIDI и Altegio с автоопределением колонок и дедупликацией
- Реферальная и агентская программы, админка с ролями и CRM лидов
- Подписка специалиста: Робокасса, Prodamus и ЮKassa с автопродлением
- 14 посадочных страниц под вертикали (фитнес, бьюти, массаж, репетиторы) с sitemap и llms.txt
Инженерные решения
- Очередь уведомлений на PostgreSQL с FOR UPDATE SKIP LOCKED, без отдельного брокера
- Идемпотентные вебхуки платёжных систем: повторное уведомление не продлевает подписку второй раз
- Бюджетная защита SMS и звонков: суточный лимит в рублях, лимиты на номер и IP
- CSP frame-ancestors разрешает встраивание только в Telegram и MAX
- SDK мессенджеров раздаются со своего домена, чтобы работать при сетевых ограничениях
- Два аудита кода и безопасности с исправлениями по итогам
Инфраструктура и DevOps
- CI: go vet и тесты на PostgreSQL, проверка конфига Caddy и полноты переводов
- 4 набора e2e-сценариев (вход, запись, оплата, MAX) блокируют деплой при падении
- Docker-образы в GHCR, деплой по SSH, отдельные workflow для проверок прода
- Алерты владельцу в Telegram каждые 10 минут: рост 5xx, сбои уведомлений и polling
- Ночной pg_dump по systemd-таймеру, хранение 14 дней
Стек
- Go
- PostgreSQL
- Redis
- React 19
- TypeScript
- Tailwind
- Telegram Mini App
- MAX
- Docker
- GitHub Actions


