Leonard Babakov - solo product engineer

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

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

NEXT.JS 15 SUPABASE N8N FLUTTER FIGMA SELF-HOSTED

Кейс 01

ТвойCRM - мультитенантная CRM с автоматизацией на n8n

в проде
Роль
Архитектура и весь стек, соло
Живой продукт
Посадочная
Данные
Инфраструктура на российском VPS (Beget)
Документация

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

Заявка из Telegram-бота или голосовая заметка менеджера сама попадает в карточку сделки - никто не тратит вечер на перенос переписки в таблицу. Каждый клиент работает в собственной изолированной базе - данные одного бизнеса физически не могут попасть к другому - на уровне архитектуры.

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

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

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

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

Кейс 02

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

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

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

Приватные ключи никогда не покидают защищённое хранилище телефона - так же, как банковское приложение прячет данные карты. Для iOS обошёлся без платного Apple Developer аккаунта: приложение ставится как PWA прямо из браузера. Чтобы тестировать без физического прибора, написал его цифровой двойник - удалённые тестировщики подключаются к виртуальному прибору так же, как к настоящему.

  • Свой эмулятор прибора - тестирование не привязано к железу
  • Ed25519/crypto_box на уровне протокола, ключи в Keychain/Keystore
  • PWA-канал на iOS без Apple Developer аккаунта
  • Тот же принцип и здесь: отдельные файлы журнала по процессу, приложению, сборке, реверс-инжинирингу и безопасности - с автоматической проверкой на дубли номеров перед каждым коммитом
Как это устроено

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

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

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

04

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

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 Дисциплина миграций Журнал решений и ошибок

05

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

Если задача не мой профиль - выясним быстро. И поищем точки взаимодействия. И найдём их.

LEONARD BABAKOV - SOLO PRODUCT ENGINEER - VOLZHSKY, RU

Превью деплоится автоматически при каждом обновлении - уведомление в Telegram-бот подтверждено