Как я за 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 с аналитикой выручки, графиками, полным дашбордом

Главный экран мастера 
Главный экран мастера 
Как я за 2 недели написал SaaS для мастеров красоты на Python — без команды и инвестиций
Экран клиента 
Экран клиента 

Технический стек: что под капотом
Расскажу честно — я не 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 минут.

Буду рад вопросам в комментариях — отвечу на всё.

1
Начать дискуссию