Leonard Babakov - solo product engineer_

CRM, автоматизация и приложения - от идеи до релиза.

Это не портфолио агентства - я работаю один. Ниже - два реальных проекта, сам спроектировал и довёл до готового продукта: CRM-платформа и приложение для диагностического прибора. Claude Code ускоряет рутину. К сложным проектам прикладываю документацию: что сделано и почему, примеры - в каждом кейсе.

NEXT.JS 15 SUPABASE N8N FLUTTER FIGMA SELF-HOSTED

Кейс 01

ТвойCRM - CRM, настроенная под конкретный бизнес

в проде
Роль
Архитектура и весь стек, соло
Живой продукт
Посадочная
Данные
Хранится на российском сервере, не за рубежом
Документация

CRM разворачиваю под конкретный бизнес - никакой готовой коробки с зашитыми полями. Термины, стадии сделок, типы клиентов настраиваются в справочниках, без правки кода. Школы и дистрибьюторы - готовые вертикали уже сегодня, частный случай платформы, не её потолок.

Заявка из Telegram-бота или голосовая заметка менеджера сама попадает в карточку сделки - никто не тратит вечер на перенос переписки в таблицу. У каждого клиента - своя отдельная база: чужие данные физически не смешиваются с вашими, даже по ошибке.

  • 5 компаний работают уже сейчас, каждая в своей отдельной базе данных
  • Ежедневные резервные копии на отдельном сервере, восстановление проверено вручную
  • Обновления выкладываются одной командой и откатываются сами, если что-то пошло не так
  • Документация - часть сдачи проекта: что сделано, почему и как это работает, веду и обновляю по ходу работы, не задним числом
Как это устроено

Изоляция данных - на уровне базы: у каждого клиента своя схема Postgres и свои политики Row Level Security - никакого общего флага tenant_id поверх одной таблицы. Термины, стадии сделок и поля читаются из справочников - под нового клиента с другой терминологией не нужен деплой.

Заявки из Telegram-бота и голосовые заметки менеджеров попадают в CRM через n8n - без no-code коннекторов, прямыми запросами к Telegram Bot API и REST. Голос проходит AI-структуризацию перед тем как лечь в карточку сделки. Инфраструктура своя: VPS, self-hosted Supabase, свой n8n, своя аналитика - сам решаю, что живёт на своём сервере, а что уходит во внешний API.

Документация ведётся по ходу работы, не пишется задним числом под сдачу: тематический журнал решений и ошибок (n8n, деплой, фронтенд, доступы, БД), живая схема базы, карта архитектуры, changelog с версиями.

Next.js / React Supabase Postgres · RLS · RPC n8n Voice → AI структуризация Telegram

Кейс 02

Ignis - приложение-компаньон для диагностического прибора

в проде
Роль
Приложение, защита данных, бренд
Живой продукт
Платформы
iOS (PWA), Android, macOS
Стадия
Собственный продукт, разработка
Документация

Мобильное приложение-компаньон для физического диагностического прибора - подключаешься по коду, как к беспроводным наушникам, только вместо звука получаешь показания прибора в реальном времени.

Приватные ключи никогда не покидают защищённое хранилище телефона - так же, как банковское приложение прячет данные карты. На iPhone приложение ставится прямо из браузера, без App Store и платного аккаунта разработчика. Чтобы тестировать без физического прибора, написал его цифровой двойник - удалённые тестировщики подключаются к виртуальному прибору так же, как к настоящему.

  • Свой эмулятор прибора - тестирование не привязано к железу
  • Шифрование собственного протокола, не сторонняя готовая библиотека
  • Установка на iPhone в три касания, без App Store
  • Журнал решений и ошибок - тот же принцип, что и в ТвойCRM: видно, что и почему сделано, не только готовый результат
Как это устроено

Приложение на Flutter, приватные ключи в Keychain/Keystore. Протокол шифрования - на базе Ed25519/crypto_box, байт-совместимый Dart-порт PyNaCl, не готовая библиотека "из коробки".

Для тестирования без физического устройства написан отдельный эмулятор прибора и облачный WebSocket-мост на своём сервере. Логотип и бренд-система собраны в Figma, не нарисованы руками поверх кода.

Журнал решений и ошибок разбит на отдельные файлы по процессу, приложению, сборке, реверс-инжинирингу и безопасности, с автоматической проверкой на дубли номеров перед каждым коммитом.

Flutter App iOS · Android · macOS Ed25519 Cloud bridge WebSocket, свой VPS Прибор Эмулятор

Кейс 03

Ops-bot - совещания и статусы EdTech-команды в задачи и вики

в проде
Роль
Архитектура и весь стек, соло
Формат
Telegram-бот, интеграция с Яндекс Трекер и Вики
Стадия
Клиентский проект, в работе
Подробный разбор

Заказчик - EdTech-платформа, около 120 сотрудников. Бот принимает голосовые и записи совещаний, сам создаёт задачи в Трекере и пишет в Вики. Личный статус и запись совещания обрабатываются по-разному: один голос - модели можно доверять, несколько голосов без разметки - только с подтверждением человека.

На записи с несколькими голосами бот не различает, кто говорит - вместо слепого автосоздания каждая находка приходит карточкой с кнопками: создать, поправить, назначить ответственного, пропустить. Ничего не попадает в боевой Трекер без клика человека.

  • Нашёл задачу - её пропустил живой слушатель того же созвона
  • Терминология компании подсказывается модели заранее, не правится задним числом
  • Сетевой сбой и баг в коде - разные сообщения пользователю, не тишина в ответ на кнопку
  • Состояние в базе, не в памяти процесса - рестарт сервиса ничего не роняет

Кейс 04

Лендинги под нишу - готовый шаблон, не проект с нуля

в проде
Роль
Дизайн, вёрстка, приём заявок через Telegram
Живые примеры
Продажа
Готовые шаблоны под нишу, Kwork

Локальному бизнесу - стройбригаде, покосу травы - не нужен сайт с нуля, нужна одна страница с заявкой, реально доходящей до телефона. Каждый шаблон получает свою нишевую иллюстрацию и цветовую схему, но заявка всегда падает в Telegram напрямую, без почты и без CRM - её владелец бизнеса всё равно никогда не откроет.

На витрине шаблона - живой демо-режим: нажал кнопку, увидел реальное уведомление в Telegram, а не скриншот-обещание. Покупатель проверяет механику до оплаты, не после.

06

Стек - то, чем реально пользуюсь

Список ниже - для тех, кому интересно заглянуть под капот. Разбираться в нём не нужно - выбор инструментов остаётся моей заботой, даже если стек заказчика устроен иначе. Нанимают за результат.

Frontend / UI
Next.js 15 (App Router) React 19 TypeScript Tailwind CSS 4 shadcn/ui · Radix Flutter
Данные и бэкенд
PostgreSQL Supabase (self-hosted) Row Level Security RPC / PL-pgSQL JSONB-схемы
Автоматизация
n8n (self-hosted) Telegram Bot API REST-интеграции Webhooks
Безопасность и крипто
Ed25519 / crypto_box Keychain / Keystore RLS-аудит доступа
Инфраструктура
VPS (nginx, pm2) Скриптованный деплой Бэкапы БД Self-hosted аналитика
Дизайн и бренд
Figma Дизайн-токены Айдентика и лого
Процесс
Claude Code Дисциплина миграций Журнал решений и ошибок

07

Опишите задачу - решим, что можно сделать

Если задача не мой профиль - скажу сразу, без недели вежливой переписки. Дизайн с нуля - честно, не моя сильная сторона. А вот готовую дизайн-систему или референсы возьму и доведу до рабочего интерфейса без потерь.

  • Асинхронно - без обязательных созвонов по расписанию, пишу и отвечаю по мере готовности
  • ТЗ - хоть голосовым в Telegram: наговорили мысль, я сам оформлю её в план
  • План согласуем - и сразу в работу, без долгих раскачек
  • Каждая правка видна сразу на превью-ссылке - не нужно ждать демо-звонка, чтобы понять, что происходит с вашим заказом

LEONARD BABAKOV - SOLO PRODUCT ENGINEER - VOLZHSKY, RU