Как я за 2 недели написал SaaS для мастеров красоты на Python — без команды и инвестиций
16 000 строк кода, 3 платёжные системы, мульти-бот архитектура и первые платящие пользователи. Один человек, Python и много кофе.
47 непрочитанных сообщений Марина скинула мне скриншот: 47 непрочитанных сообщений в WhatsApp. Все с одним вопросом — «когда ты свободна?». Это был обычный понедельник.
Марина — мастер маникюра. Хорошая, с постоянными клиентами, нормальным ценником. Но каждый день она тратила 1,5–2 часа только на переписку: «а когда ты свободна?», «можно перенести?», «напомни адрес». Каждый день. 7 дней в неделю.
— Почему не используешь что-то для онлайн-записи?
— YCLIENTS стоит 4 000 в месяц и там разбираться три дня. DIKIDI не лучше. И клиенты всё равно пишут мне в WhatsApp, им лень регистрироваться на каком-то сайте.
«А если бы всё было прямо в Telegram?» — подумал я. Клиент уже там. Мастер уже там. Зачем куда-то уходить?
Так появился Codi.
Что такое Codi и как это работает
Codi — это SaaS-платформа для онлайн-записи клиентов, которая живёт полностью внутри Telegram. Без приложений, без сайтов, без регистраций.
Как это выглядит для клиента:
• Клиент открывает бот мастера в Telegram
• Выбирает услугу, удобную дату и время
• Получает подтверждение и автоматическое напоминание за 24 часа и за 6 часов
• Готово. Мастер просто открывает расписание утром и видит заполненный день.
Если вы мастер и хотите попробовать прямо сейчас — @GlavCodi_bot (7 дней бесплатно, промокод "VCRU"). А пока расскажу как это устроено внутри.
Что получает мастер:
• Свой личный бот под своим именем и аватаркой
• Расписание с удобной недельной сеткой
• Каталог услуг с ценами и длительностью
• CRM клиентов (new / regular / vip, заметки о каждом)
• Учёт доходов и расходов с категориями
• Рассылки клиентам (текст + фото + планирование отправки)
• Автоматические напоминания — снижают no-show на 60–70%
• Mini App с аналитикой выручки, графиками, полным дашбордом
Технический стек: что под капотом
Расскажу честно — я не senior с 10 годами опыта. Я разработчик который умеет быстро учиться и строить продукты. Вот что получилось:
Backend:
• Python 3.12 + aiogram 3.x (Telegram Bot Framework)
• aiohttp — REST API для Mini App (61 endpoint)
• SQLite + aiosqlite — база данных (21 таблица, 125 функций)
• APScheduler — 9 фоновых задач: напоминания, отчёты, автопродление подписок
• Мульти-бот архитектура: главный бот + индивидуальный бот для каждого мастера
Оплата (три системы):
• YooKassa — карты РФ, автоплатежи через сохранённый payment_method_id
• Lava.top — международные карты
• Telegram Stars — встроенная оплата Telegram
Frontend (Mini App):
• SPA в одном HTML-файле, 3 145 строк — ClientApp + MasterApp + SuperAdminApp
• Chart.js — интерактивные графики выручки
• Свайп-навигация, тёмная/светлая тема, iOS safe-area
• Авторизация через Telegram initData (HMAC-SHA256)
Итого: 16 043 строки кода, 17 Python-файлов, 12 сессий разработки, 51 FSM-состояние.
Самые интересные технические решения
Мульти-бот на одном сервере
Каждый мастер получает собственного бота — со своим именем, аватаркой и username. Не общего бота Codi, а именно своего. Это было одним из главных продуктовых решений.
Реализовано через динамическое создание polling-воркеров: при активации подписки мастера система запускает новый asyncio-процесс с его bot_token. При деактивации — останавливает. Управление воркерами в runtime без перезапуска основного процесса.
Автоплатежи через YooKassa
Мастер один раз вводит карту — дальше подписка списывается автоматически. Технически: первый платёж 10₽ с capture=False, затем refund, в ответе получаем payment_method_id. Каждые 12 часов scheduler проверяет мастеров у которых подписка истекает и делает автоматическое списание.
FSM с 51 состоянием
Aiogram FSM используется для всех многошаговых флоуов: регистрация мастера, добавление услуги, создание рассылки, запись клиента. 51 состояние — это не баг, это фича. Каждый шаг имеет валидацию и возможность выйти на любом этапе.
Что было сложнее всего
1. Онбординг мастера.
Мастера — не технари. «Добавь рабочие дни» казалось мне очевидным, но первые тестеры зависали на этом шаге. Пришлось переписать онбординг три раза, добавить подсказки на каждом шаге и видео-инструкцию.
2. Telegram webhook vs polling.
Главный бот работает на webhook (нужен для быстрых ответов на платёжные колбеки), воркеры — на polling. Совместить их в одном asyncio event loop без гонок данных — отдельный квест.
3. Синхронизация слотов.
Когда два клиента одновременно смотрят расписание и один успевает забронировать слот раньше — второй должен увидеть что место занято. С SQLite и asyncio это решается через транзакции с EXCLUSIVE lock.
Сравнение с конкурентами: честно
YCLIENTS: от 3 500₽/мес, полнофункциональная CRM, сложный интерфейс, клиенту нужно приложение или регистрация на сайте.
DIKIDI: от 1 900₽/мес, чуть проще чем YCLIENTS, но та же история с приложением.
Codi: от 1490₽/мес, всё в Telegram, клиенту ничего не нужно устанавливать, запуск за 10 минут.
Я не пытаюсь конкурировать по функционалу — YCLIENTS делает команда из 50+ человек уже много лет. Моё преимущество — цена, простота и то что всё в Telegram. Для частного мастера с 20–100 клиентами этого более чем достаточно.
Что дальше
В планах:
• Миграция с SQLite на PostgreSQL — главный технический долг
• Лендинг с SEO для органического трафика из Яндекса и Google
• Интеграция с Instagram — кнопка «Записаться» в шапке профиля мастера
• Партнёрства с онлайн-школами для мастеров
• Виджет для ВКонтакте
Вместо вывода: Работающий продукт, 16 000+ строк кода, первые платящие пользователи — всё это сделал один человек за несколько недель. Без инвестиций, без команды, без офиса.
Главное что я понял: не нужно делать идеальный продукт. Нужно сделать продукт который решает реальную проблему реальных людей — запустить, собрать обратную связь и итерировать. Всё остальное вторично.
Если вы мастер маникюра, барбер, косметолог или любой другой специалист с клиентами — попробуйте Codi: @GlavCodi_bot. Первые 7 дней бесплатно, без привязки карты. Запуск за 15 минут.
Буду рад вопросам в комментариях — отвечу на всё.
Теги: #python #telegram #saas #стартап #онлайн_запись #инди_разработка #aiogram #бьюти