Один текст уходит в Telegram, VK и MAX. Разметку конвертирую на уровне AST, крайние случаи покрыты тестами.
Архитектура
features/*coreshared
20+модулей перенесено к владельцамнарушений границ модулей: 99 → 15
План рефакторинга стал стандартом команды. Слои перестроены: shared → core → features, границы проверяет CI.
Активность
03
04
05
06
07
08
09
10
11
12
01
02
03
04
05
06
07
08
09
20252026
Коммиты в основное SPA по месяцам. Летом 2026 крупные рефакторинги шли параллельно с продуктовыми задачами. ≈1 050 уникальных коммитов в 11 репозиториях
1 / 6
</>Кирилл ЛевинFrontend Edition
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Нанять Кирилла Левина
Полная занятость · удалённо, гибрид или офис в СПб
Разработчик и пять агентов на Claude Code и Cursor: задача идёт по фазам, правила проекта задают архитектуру и безопасность, а хуки не закрывают фазу без реальных прогонов линтера и тестов.
−83%6 ролей1 оффер
Пригласить на собеседование
Демо-версия: 60 минут, без регистрации и SMS
Бесплатно
Об этой игре
Главные кейсы за последние полтора года, от самых заметных для бизнеса. Цифры — мои замеры и данные команды. Код компаний не публикую.
+50%Конверсия+50%
Маркетинговый сайт: +50% переходов на регистрацию
BotHelp · 2026
Задача
Нужно было превратить трафик блога в регистрации в продукте и не терять атрибуцию при переходе с сайта в приложение.
Решение
Сделал на WordPress CTA-блоки и сайдбар в статьях с передачей ref и UTM, мегаменю и лендинг CRM-интеграции. Перевёл Яндекс Метрику на новый тег, чтобы просмотр гарантированно отправлялся до редиректа, настроил кросс-доменную синхронизацию cookie партнёрской сети и убрал дубли событий Amplitude.
Итог
Переходов с сайта на регистрацию стало на 50% больше, а источники трафика считаются корректно.
WordPressUTMЯндекс МетрикаAmplitude
≈30%Деньги≈30%
Биллинг: расширения тарифа подключают ≈30% платящих
BotHelp · май 2025 — июль 2026
Задача
Продукту понадобились платные и бесплатные расширения поверх тарифа. Они должны корректно вести себя в пробном периоде, при истечении, отмене и даунгрейде.
Решение
Сделал фронтенд биллинга: расширения, докупку хранилища и токенов, лимиты, проверку даунгрейда, граничные состояния подписки, мобильную версию. Подключил FastSpring, Робокассу, ЮMoney и ещё одного провайдера.
Итог
Расширения подключают около 30% платящих клиентов. Граничные случаи подписки прошли больше шести итераций с QA.
FastSpringРобокассаЮMoney
1–2 дняСкорость разработки1–2 дня
Новый инструмент за 1–2 дня вместо недели
BotHelp · август 2026
Задача
Около десяти инструментов привлечения подписчиков (виджеты, лендинги, ссылки, автоответы на комментарии) были копиями друг друга. Новый добавлялся неделю.
Решение
Свёл их к реестру определений с общим CRUD-контрактом, фабриками NGXS-состояний и форм-адаптеров и базовыми компонентами. Роуты генерируются из реестра, NgModules удалены, компоненты стали standalone.
Итог
Новый инструмент теперь описывается определением в реестре. По ходу удалил 7.6k строк legacy и заменил snapshot-тесты спеками.
NGXSStandaloneJest
20+ модулейАрхитектура20+ модулей
Архитектура фронтенда: план рефакторинга стал стандартом команды
BotHelp · сентябрь 2025 — август 2026
Задача
Большое Angular-приложение в Nx-монорепо росло без чётких границ: фичи тянули друг друга через общие слои, бандл плохо делился на чанки, новые задачи давались всё дороже.
Решение
Провёл аудит и написал поэтапный план рефакторинга, команда приняла его как стандарт. По плану перестроил слои (shared → core → features), перенёс код 20+ модулей к владельцам и закрепил границы правилами ESLint в CI. Все формы перевёл на Typed Forms, панели и меню — на Signals.
Итог
Команда из пяти фронтенд-разработчиков работает по одному стандарту. Нарушений границ модулей стало 15 вместо 99, бандл лучше делится на чанки, сторонняя библиотека форм удалена.
NxESLintTyped FormsSignals
smoke-E2EИнструменты для командыsmoke-E2E
Автотесты на стабильных data-testid
BotHelp · июнь — август 2026
Задача
E2E-тесты держались на хрупких селекторах, а расставлять data-testid вручную в сотнях шаблонов было нереально.
Решение
Написал на Node.js сканер шаблонов, генератор имён по правилам и реестр. Добавил проверку в CI и pre-commit и своё правило ESLint.
Итог
testId генерируются автоматически и проверяются в CI. На этой базе команда запустила smoke-автотесты.
Node.jsESLintCIE2E
−85%Скорость−85%
Конструктор ботов: время открытия −85%
BotHelp · апрель 2026
Задача
Визуальный конструктор сценариев на GoJS — главный экран продукта. Большой сценарий открывался около 13 секунд, компонент страницы разросся до монолита.
Решение
Вынес конвертацию модели диаграммы в Web Worker, разбил страницу на сервисы, переписал рендер и загрузку модели, закрыл гонки синхронизации канваса после переподключения WebSocket.
Итог
Большой сценарий открывается за 2 секунды вместо 13. Оптимизацию главного экрана выпускал поэтапно и с быстрым путём отката.
GoJSWeb WorkersWebSocket
3 мессенджераСтабильность3 мессенджера
Стабильное форматирование в Telegram, VK и MAX
BotHelp · январь — июнь 2026
Задача
Один текст уходит в три мессенджера, и у каждого своя разметка и свои лимиты длины. Конвертация ломала ссылки, макросы и переносы строк.
Решение
Написал конвертацию HTML ↔ Markdown на уровне AST с экранированием ссылок и макросов, счётчики длины, превью и конвертер старых сообщений Telegram.
Итог
Крайние случаи покрыты тестами, и форматирование одинаково работает во всех трёх мессенджерах.
mdastMarkdownRich text
5 агентовAI в разработке5 агентов
Отряд агентов: аналитик, архитектор, исполнитель, ревьюер, отладчик
BotHelp · 2026
Задача
AI-инструменты в команде использовались по-разному, и результат зависел от того, кто сидит за клавиатурой.
Решение
Внедрил в команде AI-assisted разработку на Claude Code и Cursor. Агенты с ролями аналитика, архитектора, исполнителя, ревьюера и отладчика ведут задачу по фазам с файлами плана и решений, а команды /implement, /bugfix и /review закрывают типовые сценарии. Правила проекта описывают архитектуру, тестирование, безопасность (входные данные, инъекции, секреты) и работу с git.
Итог
Качество контролируют хуки: фаза не закрывается без реальных прогонов линтера и тестов, опасные git-команды вроде force-push блокируются. Провёл по этому подходу митапы для команды. Решения по-прежнему принимаю я.
Claude CodeCursorХукиБезопасность
Svelte 5Встраиваемый кодSvelte 5
Чат-виджет AI-агента на Svelte 5
BotHelp · май — сентябрь 2026
Задача
Нужен был виджет AI-агента для сайтов клиентов, который не конфликтует с чужой вёрсткой и не создаёт лишней нагрузки.
Решение
Изоляция через Shadow DOM, UTM, брендирование, подключение к WebSocket только после открытия виджета. Собрал монорепо публичных фронтендов на pnpm + Turborepo и перевёл деплой на Shipit.
Итог
У операторов пропали пустые диалоги с каждым посетителем сайта, а у статики появились stage, prod и откат.
Svelte 5Shadow DOMTurborepo
Описание контента для взрослых
Разработчик описывает контент так: присутствуют сцены удаления legacy-кода и принудительной миграции NgModules на standalone.
Обновления и история версий
3.0BotHelp
Крупное обновление
BotHelp — Frontend-разработчик
март 2025 — сентябрь 2026
Высоконагруженная SaaS-платформа чат-ботов и мессенджер-маркетинга: массовые рассылки, чаты операторов в реальном времени, конструктор ботов, CRM-интеграции и AI-агенты. Telegram, VK, MAX, WhatsApp.
Список изменений (9)
Фронтенд биллинга и четыре платёжных провайдера: расширения тарифа подключают ≈30% платящих клиентов.
Маркетинговый сайт: CTA-блоки с передачей UTM дали +50% переходов на регистрацию.
Написал план рефакторинга, который стал стандартом команды, и перестроил по нему архитектуру слоёв в Nx.
Перевёл growth tools на реестр определений: новый инструмент за 1–2 дня вместо недели.
Автоматизировал data-testid для E2E, команда запустила smoke-автотесты.
Сократил время открытия конструктора ботов на 85%: большой сценарий открывается за 2 с вместо 13.
Переделал основные страницы кабинета, добавил папки и мобильную версию: большие списки показываются на 93% быстрее.
Переработал форматирование сообщений для Telegram, VK и MAX: конвертация HTML ↔ Markdown на уровне AST, крайние случаи покрыты тестами.
Отвечал за архитектуру фронтенда в команде из 5 разработчиков: проводил код-ревью, в том числе Flutter-приложения, менторил двух разработчиков, внедрил AI-assisted разработку.
Angular 17–22, TypeScript, RxJS, NGXS, Signals, Nx, Jest, GoJS, Web Workers, WebSocket, Svelte 5, Flutter, GitLab CI
2.0Т1
Обновление
Т1 — Frontend-разработчик
июль 2023 — март 2025
IT-холдинг, системная интеграция. Визуальный low-code редактор для CRM, в котором команды внедрения собирают бизнес-сервисы.
Список изменений (4)
Ускорил страницы с таблицами на 10k строк: ленивая загрузка данных и модулей, быстрее отрисовка таблиц и графов.
Экраны low-code редактора: динамические формы, настраиваемые таблицы, графы и диаграммы на ECharts, выгрузка отчётов.
Три компонента внутреннего UI-kit: Angular-обёртки над web components на Lit.
Один из двух фронтенд-разработчиков в команде из 20 человек: R&D, технические решения для новых модулей, код-ревью, митапы, помогал с адаптацией двух новых сотрудников.
Angular 14–18, TypeScript, RxJS, Web Components, Lit, GraphQL, ECharts, Webpack, Vite
1.0easstacademy
Ранний доступ
easstacademy — Frontend-разработчик
март 2021 — май 2023
Образовательная онлайн-платформа с курсами.
Список изменений (3)
В одиночку разработал фронтенд: сайт курсов, блог, CMS, админку для контента и медиа.
Оплата, вход через OAuth, генерация сертификатов и счетов в PDF.
Пока я там работал, платформа продала больше 200 корпоративных лицензий.
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Платформа, фронтенд которой я сделал один, продала 200+ корпоративных лицензий
2023
WS
Тихий виджет
Виджет подключается к серверу только после открытия
2026
Что говорят продукты
Отзывы от лица продукта и инструментов. Цифры настоящие.
+50% переходов на регистрациюмаркетинговый сайт
Блог компании
Когда в статьях появились CTA-блоки с передачей ref и UTM, из блога на регистрацию стали переходить на 50% чаще.
≈30% платящих клиентоврасширения тарифа
Биллинг
Расширения подключает примерно каждый третий платящий клиент. Пробный период, отмена и даунгрейд работают предсказуемо.
13 с → 2 сглавный экран продукта
Конструктор ботов
Большой сценарий открывается за 2 секунды вместо 13. Конвертация модели ушла в Web Worker, рендер и загрузка переписаны.
3 мессенджераTelegram, VK, MAX
Рассылки
Один и тот же текст одинаково выглядит в Telegram, VK и MAX: ссылки, макросы и переносы строк переживают конвертацию. Крайние случаи покрыты тестами.
99 → 15границы модулей
ESLint
Проверяю границы модулей на каждом MR. Нарушений было 99, осталось 15, и новые в основную ветку не попадают.
0 пустых диалоговAI-виджет
Инбокс оператора
Виджет подключается к серверу, только когда посетитель его открыл. Пустых диалогов на каждый заход на сайт больше нет.
Участники
Агенты работают на Claude Code и Cursor. Решения принимаю я, за код отвечаю лично.
Кирилл Левин
Лидер отряда · ставит задачу
Ан
Аналитик
В игре: пишет критерии приёмки
Ар
Архитектор
В игре: строит карту влияния
Ис
Исполнитель
В игре: код и тесты группы
Рв
Ревьюер
В игре: вердикт по diff
От
Отладчик
Ждёт вызова: корневая причина
Об исполнителе
</>
5+лет коммерческой разработки. Содержит сцены рефакторинга.
Открыт к предложениям
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Открыт к предложениям2021–20263 сезона9 эпизодовHD
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
> **Открыт к предложениям.** Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Открыт к предложениям. Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
# Маркетинговый сайт: +50% переходов на регистрацию
> **+50%** · Конверсия · BotHelp · 2026
## Задача
Нужно было превратить трафик блога в регистрации в продукте и не терять атрибуцию при переходе с сайта в приложение.
## Решение
Сделал на WordPress CTA-блоки и сайдбар в статьях с передачей ref и UTM, мегаменю и лендинг CRM-интеграции. Перевёл Яндекс Метрику на новый тег, чтобы просмотр гарантированно отправлялся до редиректа, настроил кросс-доменную синхронизацию cookie партнёрской сети и убрал дубли событий Amplitude.
## Итог
Переходов с сайта на регистрацию стало на 50% больше, а источники трафика считаются корректно.
`WordPress``UTM``Яндекс Метрика``Amplitude`
Маркетинговый сайт: +50% переходов на регистрацию
+50% · Конверсия · BotHelp · 2026
Задача
Нужно было превратить трафик блога в регистрации в продукте и не терять атрибуцию при переходе с сайта в приложение.
Решение
Сделал на WordPress CTA-блоки и сайдбар в статьях с передачей ref и UTM, мегаменю и лендинг CRM-интеграции. Перевёл Яндекс Метрику на новый тег, чтобы просмотр гарантированно отправлялся до редиректа, настроил кросс-доменную синхронизацию cookie партнёрской сети и убрал дубли событий Amplitude.
Итог
Переходов с сайта на регистрацию стало на 50% больше, а источники трафика считаются корректно.
WordPressUTMЯндекс МетрикаAmplitude
usertrv›cases›M↓billing.md
# Биллинг: расширения тарифа подключают ≈30% платящих
> **≈30%** · Деньги · BotHelp · май 2025 — июль 2026
## Задача
Продукту понадобились платные и бесплатные расширения поверх тарифа. Они должны корректно вести себя в пробном периоде, при истечении, отмене и даунгрейде.
## Решение
Сделал фронтенд биллинга: расширения, докупку хранилища и токенов, лимиты, проверку даунгрейда, граничные состояния подписки, мобильную версию. Подключил FastSpring, Робокассу, ЮMoney и ещё одного провайдера.
## Итог
Расширения подключают около 30% платящих клиентов. Граничные случаи подписки прошли больше шести итераций с QA.
`FastSpring``Робокасса``ЮMoney`
Биллинг: расширения тарифа подключают ≈30% платящих
≈30% · Деньги · BotHelp · май 2025 — июль 2026
Задача
Продукту понадобились платные и бесплатные расширения поверх тарифа. Они должны корректно вести себя в пробном периоде, при истечении, отмене и даунгрейде.
Решение
Сделал фронтенд биллинга: расширения, докупку хранилища и токенов, лимиты, проверку даунгрейда, граничные состояния подписки, мобильную версию. Подключил FastSpring, Робокассу, ЮMoney и ещё одного провайдера.
Итог
Расширения подключают около 30% платящих клиентов. Граничные случаи подписки прошли больше шести итераций с QA.
FastSpringРобокассаЮMoney
usertrv›cases›M↓growth.md
# Новый инструмент за 1–2 дня вместо недели
> **1–2 дня** · Скорость разработки · BotHelp · август 2026
## Задача
Около десяти инструментов привлечения подписчиков (виджеты, лендинги, ссылки, автоответы на комментарии) были копиями друг друга. Новый добавлялся неделю.
## Решение
Свёл их к реестру определений с общим CRUD-контрактом, фабриками NGXS-состояний и форм-адаптеров и базовыми компонентами. Роуты генерируются из реестра, NgModules удалены, компоненты стали standalone.
## Итог
Новый инструмент теперь описывается определением в реестре. По ходу удалил 7.6k строк legacy и заменил snapshot-тесты спеками.
`NGXS``Standalone``Jest`
Новый инструмент за 1–2 дня вместо недели
1–2 дня · Скорость разработки · BotHelp · август 2026
Задача
Около десяти инструментов привлечения подписчиков (виджеты, лендинги, ссылки, автоответы на комментарии) были копиями друг друга. Новый добавлялся неделю.
Решение
Свёл их к реестру определений с общим CRUD-контрактом, фабриками NGXS-состояний и форм-адаптеров и базовыми компонентами. Роуты генерируются из реестра, NgModules удалены, компоненты стали standalone.
Итог
Новый инструмент теперь описывается определением в реестре. По ходу удалил 7.6k строк legacy и заменил snapshot-тесты спеками.
NGXSStandaloneJest
usertrv›cases›M↓layers.md
# Архитектура фронтенда: план рефакторинга стал стандартом команды
Большое Angular-приложение в Nx-монорепо росло без чётких границ: фичи тянули друг друга через общие слои, бандл плохо делился на чанки, новые задачи давались всё дороже.
## Решение
Провёл аудит и написал поэтапный план рефакторинга, команда приняла его как стандарт. По плану перестроил слои (shared → core → features), перенёс код 20+ модулей к владельцам и закрепил границы правилами ESLint в CI. Все формы перевёл на Typed Forms, панели и меню — на Signals.
## Итог
Команда из пяти фронтенд-разработчиков работает по одному стандарту. Нарушений границ модулей стало 15 вместо 99, бандл лучше делится на чанки, сторонняя библиотека форм удалена.
`Nx``ESLint``Typed Forms``Signals`
Архитектура фронтенда: план рефакторинга стал стандартом команды
Большое Angular-приложение в Nx-монорепо росло без чётких границ: фичи тянули друг друга через общие слои, бандл плохо делился на чанки, новые задачи давались всё дороже.
Решение
Провёл аудит и написал поэтапный план рефакторинга, команда приняла его как стандарт. По плану перестроил слои (shared → core → features), перенёс код 20+ модулей к владельцам и закрепил границы правилами ESLint в CI. Все формы перевёл на Typed Forms, панели и меню — на Signals.
Итог
Команда из пяти фронтенд-разработчиков работает по одному стандарту. Нарушений границ модулей стало 15 вместо 99, бандл лучше делится на чанки, сторонняя библиотека форм удалена.
NxESLintTyped FormsSignals
usertrv›cases›M↓testid.md
# Автотесты на стабильных data-testid
> **smoke-E2E** · Инструменты для команды · BotHelp · июнь — август 2026
## Задача
E2E-тесты держались на хрупких селекторах, а расставлять data-testid вручную в сотнях шаблонов было нереально.
## Решение
Написал на Node.js сканер шаблонов, генератор имён по правилам и реестр. Добавил проверку в CI и pre-commit и своё правило ESLint.
## Итог
testId генерируются автоматически и проверяются в CI. На этой базе команда запустила smoke-автотесты.
`Node.js``ESLint``CI``E2E`
Автотесты на стабильных data-testid
smoke-E2E · Инструменты для команды · BotHelp · июнь — август 2026
Задача
E2E-тесты держались на хрупких селекторах, а расставлять data-testid вручную в сотнях шаблонов было нереально.
Решение
Написал на Node.js сканер шаблонов, генератор имён по правилам и реестр. Добавил проверку в CI и pre-commit и своё правило ESLint.
Итог
testId генерируются автоматически и проверяются в CI. На этой базе команда запустила smoke-автотесты.
Node.jsESLintCIE2E
usertrv›cases›M↓builder.md
# Конструктор ботов: время открытия −85%
> **−85%** · Скорость · BotHelp · апрель 2026
## Задача
Визуальный конструктор сценариев на GoJS — главный экран продукта. Большой сценарий открывался около 13 секунд, компонент страницы разросся до монолита.
## Решение
Вынес конвертацию модели диаграммы в Web Worker, разбил страницу на сервисы, переписал рендер и загрузку модели, закрыл гонки синхронизации канваса после переподключения WebSocket.
## Итог
Большой сценарий открывается за 2 секунды вместо 13. Оптимизацию главного экрана выпускал поэтапно и с быстрым путём отката.
`GoJS``Web Workers``WebSocket`
Конструктор ботов: время открытия −85%
−85% · Скорость · BotHelp · апрель 2026
Задача
Визуальный конструктор сценариев на GoJS — главный экран продукта. Большой сценарий открывался около 13 секунд, компонент страницы разросся до монолита.
Решение
Вынес конвертацию модели диаграммы в Web Worker, разбил страницу на сервисы, переписал рендер и загрузку модели, закрыл гонки синхронизации канваса после переподключения WebSocket.
Итог
Большой сценарий открывается за 2 секунды вместо 13. Оптимизацию главного экрана выпускал поэтапно и с быстрым путём отката.
Один текст уходит в три мессенджера, и у каждого своя разметка и свои лимиты длины. Конвертация ломала ссылки, макросы и переносы строк.
Решение
Написал конвертацию HTML ↔ Markdown на уровне AST с экранированием ссылок и макросов, счётчики длины, превью и конвертер старых сообщений Telegram.
Итог
Крайние случаи покрыты тестами, и форматирование одинаково работает во всех трёх мессенджерах.
mdastMarkdownRich text
usertrv›cases›M↓ai.md
# Отряд агентов: аналитик, архитектор, исполнитель, ревьюер, отладчик
> **5 агентов** · AI в разработке · BotHelp · 2026
## Задача
AI-инструменты в команде использовались по-разному, и результат зависел от того, кто сидит за клавиатурой.
## Решение
Внедрил в команде AI-assisted разработку на Claude Code и Cursor. Агенты с ролями аналитика, архитектора, исполнителя, ревьюера и отладчика ведут задачу по фазам с файлами плана и решений, а команды /implement, /bugfix и /review закрывают типовые сценарии. Правила проекта описывают архитектуру, тестирование, безопасность (входные данные, инъекции, секреты) и работу с git.
## Итог
Качество контролируют хуки: фаза не закрывается без реальных прогонов линтера и тестов, опасные git-команды вроде force-push блокируются. Провёл по этому подходу митапы для команды. Решения по-прежнему принимаю я.
`Claude Code``Cursor``Хуки``Безопасность`
Отряд агентов: аналитик, архитектор, исполнитель, ревьюер, отладчик
5 агентов · AI в разработке · BotHelp · 2026
Задача
AI-инструменты в команде использовались по-разному, и результат зависел от того, кто сидит за клавиатурой.
Решение
Внедрил в команде AI-assisted разработку на Claude Code и Cursor. Агенты с ролями аналитика, архитектора, исполнителя, ревьюера и отладчика ведут задачу по фазам с файлами плана и решений, а команды /implement, /bugfix и /review закрывают типовые сценарии. Правила проекта описывают архитектуру, тестирование, безопасность (входные данные, инъекции, секреты) и работу с git.
Итог
Качество контролируют хуки: фаза не закрывается без реальных прогонов линтера и тестов, опасные git-команды вроде force-push блокируются. Провёл по этому подходу митапы для команды. Решения по-прежнему принимаю я.
Claude CodeCursorХукиБезопасность
usertrv›cases›M↓widget.md
# Чат-виджет AI-агента на Svelte 5
> **Svelte 5** · Встраиваемый код · BotHelp · май — сентябрь 2026
## Задача
Нужен был виджет AI-агента для сайтов клиентов, который не конфликтует с чужой вёрсткой и не создаёт лишней нагрузки.
## Решение
Изоляция через Shadow DOM, UTM, брендирование, подключение к WebSocket только после открытия виджета. Собрал монорепо публичных фронтендов на pnpm + Turborepo и перевёл деплой на Shipit.
## Итог
У операторов пропали пустые диалоги с каждым посетителем сайта, а у статики появились stage, prod и откат.
`Svelte 5``Shadow DOM``Turborepo`
Чат-виджет AI-агента на Svelte 5
Svelte 5 · Встраиваемый код · BotHelp · май — сентябрь 2026
Задача
Нужен был виджет AI-агента для сайтов клиентов, который не конфликтует с чужой вёрсткой и не создаёт лишней нагрузки.
Решение
Изоляция через Shadow DOM, UTM, брендирование, подключение к WebSocket только после открытия виджета. Собрал монорепо публичных фронтендов на pnpm + Turborepo и перевёл деплой на Shipit.
Итог
У операторов пропали пустые диалоги с каждым посетителем сайта, а у статики появились stage, prod и откат.
Svelte 5Shadow DOMTurborepo
usertrv›experience›M↓3.0-bothelp.md
---
version: 3.0
type: Крупное обновление
period: март 2025 — сентябрь 2026
---
# BotHelp — Frontend-разработчик
Высоконагруженная SaaS-платформа чат-ботов и мессенджер-маркетинга: массовые рассылки, чаты операторов в реальном времени, конструктор ботов, CRM-интеграции и AI-агенты. Telegram, VK, MAX, WhatsApp.
## Список изменений
- Фронтенд биллинга и четыре платёжных провайдера: расширения тарифа подключают ≈30% платящих клиентов.
- Маркетинговый сайт: CTA-блоки с передачей UTM дали +50% переходов на регистрацию.
- Написал план рефакторинга, который стал стандартом команды, и перестроил по нему архитектуру слоёв в Nx.
- Перевёл growth tools на реестр определений: новый инструмент за 1–2 дня вместо недели.
- Автоматизировал data-testid для E2E, команда запустила smoke-автотесты.
- Сократил время открытия конструктора ботов на 85%: большой сценарий открывается за 2 с вместо 13.
- Переделал основные страницы кабинета, добавил папки и мобильную версию: большие списки показываются на 93% быстрее.
- Переработал форматирование сообщений для Telegram, VK и MAX: конвертация HTML ↔ Markdown на уровне AST, крайние случаи покрыты тестами.
- Отвечал за архитектуру фронтенда в команде из 5 разработчиков: проводил код-ревью, в том числе Flutter-приложения, менторил двух разработчиков, внедрил AI-assisted разработку.
**Стек:** Angular 17–22, TypeScript, RxJS, NGXS, Signals, Nx, Jest, GoJS, Web Workers, WebSocket, Svelte 5, Flutter, GitLab CI
BotHelp — Frontend-разработчик
Высоконагруженная SaaS-платформа чат-ботов и мессенджер-маркетинга: массовые рассылки, чаты операторов в реальном времени, конструктор ботов, CRM-интеграции и AI-агенты. Telegram, VK, MAX, WhatsApp.
Список изменений
Фронтенд биллинга и четыре платёжных провайдера: расширения тарифа подключают ≈30% платящих клиентов.
Маркетинговый сайт: CTA-блоки с передачей UTM дали +50% переходов на регистрацию.
Написал план рефакторинга, который стал стандартом команды, и перестроил по нему архитектуру слоёв в Nx.
Перевёл growth tools на реестр определений: новый инструмент за 1–2 дня вместо недели.
Автоматизировал data-testid для E2E, команда запустила smoke-автотесты.
Сократил время открытия конструктора ботов на 85%: большой сценарий открывается за 2 с вместо 13.
Переделал основные страницы кабинета, добавил папки и мобильную версию: большие списки показываются на 93% быстрее.
Переработал форматирование сообщений для Telegram, VK и MAX: конвертация HTML ↔ Markdown на уровне AST, крайние случаи покрыты тестами.
Отвечал за архитектуру фронтенда в команде из 5 разработчиков: проводил код-ревью, в том числе Flutter-приложения, менторил двух разработчиков, внедрил AI-assisted разработку.
Стек: Angular 17–22, TypeScript, RxJS, NGXS, Signals, Nx, Jest, GoJS, Web Workers, WebSocket, Svelte 5, Flutter, GitLab CI
usertrv›experience›M↓2.0-t1.md
---
version: 2.0
type: Обновление
period: июль 2023 — март 2025
---
# Т1 — Frontend-разработчик
IT-холдинг, системная интеграция. Визуальный low-code редактор для CRM, в котором команды внедрения собирают бизнес-сервисы.
## Список изменений
- Ускорил страницы с таблицами на 10k строк: ленивая загрузка данных и модулей, быстрее отрисовка таблиц и графов.
- Экраны low-code редактора: динамические формы, настраиваемые таблицы, графы и диаграммы на ECharts, выгрузка отчётов.
- Три компонента внутреннего UI-kit: Angular-обёртки над web components на Lit.
- Один из двух фронтенд-разработчиков в команде из 20 человек: R&D, технические решения для новых модулей, код-ревью, митапы, помогал с адаптацией двух новых сотрудников.
**Стек:** Angular 14–18, TypeScript, RxJS, Web Components, Lit, GraphQL, ECharts, Webpack, Vite
Т1 — Frontend-разработчик
IT-холдинг, системная интеграция. Визуальный low-code редактор для CRM, в котором команды внедрения собирают бизнес-сервисы.
Список изменений
Ускорил страницы с таблицами на 10k строк: ленивая загрузка данных и модулей, быстрее отрисовка таблиц и графов.
Экраны low-code редактора: динамические формы, настраиваемые таблицы, графы и диаграммы на ECharts, выгрузка отчётов.
Три компонента внутреннего UI-kit: Angular-обёртки над web components на Lit.
Один из двух фронтенд-разработчиков в команде из 20 человек: R&D, технические решения для новых модулей, код-ревью, митапы, помогал с адаптацией двух новых сотрудников.
Стек: Angular 14–18, TypeScript, RxJS, Web Components, Lit, GraphQL, ECharts, Webpack, Vite
usertrv›experience›M↓1.0-easstacademy.md
---
version: 1.0
type: Ранний доступ
period: март 2021 — май 2023
---
# easstacademy — Frontend-разработчик
Образовательная онлайн-платформа с курсами.
## Список изменений
- В одиночку разработал фронтенд: сайт курсов, блог, CMS, админку для контента и медиа.
- Оплата, вход через OAuth, генерация сертификатов и счетов в PDF.
- Пока я там работал, платформа продала больше 200 корпоративных лицензий.
*маркетинговый сайт* · **+50% переходов на регистрацию**
> Когда в статьях появились CTA-блоки с передачей ref и UTM, из блога на регистрацию стали переходить на 50% чаще.
Блог компании
маркетинговый сайт · +50% переходов на регистрацию
Когда в статьях появились CTA-блоки с передачей ref и UTM, из блога на регистрацию стали переходить на 50% чаще.
usertrv›reviews›M↓02-billing.md
# Биллинг
*расширения тарифа* · **≈30% платящих клиентов**
> Расширения подключает примерно каждый третий платящий клиент. Пробный период, отмена и даунгрейд работают предсказуемо.
Биллинг
расширения тарифа · ≈30% платящих клиентов
Расширения подключает примерно каждый третий платящий клиент. Пробный период, отмена и даунгрейд работают предсказуемо.
usertrv›reviews›M↓03-bot-builder.md
# Конструктор ботов
*главный экран продукта* · **13 с → 2 с**
> Большой сценарий открывается за 2 секунды вместо 13. Конвертация модели ушла в Web Worker, рендер и загрузка переписаны.
Конструктор ботов
главный экран продукта · 13 с → 2 с
Большой сценарий открывается за 2 секунды вместо 13. Конвертация модели ушла в Web Worker, рендер и загрузка переписаны.
usertrv›reviews›M↓04-broadcasts.md
# Рассылки
*Telegram, VK, MAX* · **3 мессенджера**
> Один и тот же текст одинаково выглядит в Telegram, VK и MAX: ссылки, макросы и переносы строк переживают конвертацию. Крайние случаи покрыты тестами.
Рассылки
Telegram, VK, MAX · 3 мессенджера
Один и тот же текст одинаково выглядит в Telegram, VK и MAX: ссылки, макросы и переносы строк переживают конвертацию. Крайние случаи покрыты тестами.
usertrv›reviews›M↓05-eslint.md
# ESLint
*границы модулей* · **99 → 15**
> Проверяю границы модулей на каждом MR. Нарушений было 99, осталось 15, и новые в основную ветку не попадают.
ESLint
границы модулей · 99 → 15
Проверяю границы модулей на каждом MR. Нарушений было 99, осталось 15, и новые в основную ветку не попадают.
usertrv›reviews›M↓06-operator-inbox.md
# Инбокс оператора
*AI-виджет* · **0 пустых диалогов**
> Виджет подключается к серверу, только когда посетитель его открыл. Пустых диалогов на каждый заход на сайт больше нет.
Инбокс оператора
AI-виджет · 0 пустых диалогов
Виджет подключается к серверу, только когда посетитель его открыл. Пустых диалогов на каждый заход на сайт больше нет.
Оперативная память: хотя бы один коллега во фронтенде
Видеокарта: макеты в Figma
Сеть: широкополосное подключение к бэкендерам
recommended: # Рекомендованные
ОС: удалёнка
Процессор: влияние на архитектуру фронтенда
Оперативная память: договорённости о стандартах и автоматические проверки в CI
Видеокарта: сложные интерфейсы: формы, таблицы, редакторы, realtime
Звуковая карта: митапы и обмен знаниями
Дополнительно: AI-инструменты не запрещены
Откройте файл в проводнике
main00Стр. 1, стлб. 1Пробелов: 2UTF-8LFMarkdown
Открыт к предложениям
Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Открыт к предложениям. Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Рекомендуемые каналы
Агенты работают на Claude Code и Cursor. Решения принимаю я, за код отвечаю лично.
Кирилл ЛевинЛидер отряда · ставит задачу
АнАналитикВ игре: пишет критерии приёмки
АрАрхитекторВ игре: строит карту влияния
ИсИсполнительВ игре: код и тесты группы
РвРевьюерВ игре: вердикт по diff
ОтОтладчикЖдёт вызова: корневая причина
Видео
BotHelp · Конверсия
BotHelp · Деньги
BotHelp · Скорость разработки
BotHelp · Архитектура
BotHelp · Инструменты для команды
BotHelp · Скорость
BotHelp · Стабильность
BotHelp · AI в разработке
BotHelp · Встраиваемый код
Shorts
Конверсия
+50% переходов с сайта на регистрацию
Кассир
Расширения тарифа подключают ≈30% платящих клиентов
Архитектор
План рефакторинга стал стандартом команды
Конвейер
Новый growth tool за 1–2 дня вместо недели
Меткий стрелок
data-testid генерируются сами, на них держатся smoke-тесты
Скорострел
Время открытия большого сценария −85% (13 с → 2 с)
Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
Б
Блог компаниимаркетинговый сайт
Когда в статьях появились CTA-блоки с передачей ref и UTM, из блога на регистрацию стали переходить на 50% чаще.
+50% переходов на регистрациюБлог компании · маркетинговый сайт
Б
Биллинграсширения тарифа
Расширения подключает примерно каждый третий платящий клиент. Пробный период, отмена и даунгрейд работают предсказуемо.
≈30% платящих клиентовБиллинг · расширения тарифа
К
Конструктор ботовглавный экран продукта
Большой сценарий открывается за 2 секунды вместо 13. Конвертация модели ушла в Web Worker, рендер и загрузка переписаны.
13 с → 2 сКонструктор ботов · главный экран продукта
Р
РассылкиTelegram, VK, MAX
Один и тот же текст одинаково выглядит в Telegram, VK и MAX: ссылки, макросы и переносы строк переживают конвертацию. Крайние случаи покрыты тестами.
3 мессенджераРассылки · Telegram, VK, MAX
E
ESLintграницы модулей
Проверяю границы модулей на каждом MR. Нарушений было 99, осталось 15, и новые в основную ветку не попадают.
99 → 15ESLint · границы модулей
И
Инбокс оператораAI-виджет
Виджет подключается к серверу, только когда посетитель его открыл. Пустых диалогов на каждый заход на сайт больше нет.
Кирилл Левин — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.
Каталог маленьких браузерных игр для телефона: башня из плит, которые надо обрезать точным тапом, рой дронов, который надо стравить друг с другом, рикошеты по блокам, сортировка свайпом на скорость, раскачка на тросе вдогонку за пустотой, цепная реакция от одного касания и неоновая трасса в заносе. Все на чистом Canvas 2D без зависимостей, со звуком на Web Audio и рекордами на устройстве. Там же 3D-игра Black Hole: чёрная дыра поглощает процедурный город, физика Rapier в WebAssembly.
KPI с периодом сравнения, продажи с drill-down, маркетинговая воронка, когорты и сводные отчёты. ~286 тыс. заказов генерируются и агрегируются в Web Worker, интерфейс получает только готовые итоги.
Канбан и whiteboard, которые работают офлайн. Откройте доску в двух вкладках: карточки, курсоры и «кто редактирует» синхронизируются сразу, а после офлайна CRDT сливает изменения.
1kБронзовыйТысячник≈1 050 уникальных коммитов в 11 репозиторияхПолучено: сен 2026
200БронзовыйСоло-режимПлатформа, фронтенд которой я сделал один, продала 200+ корпоративных лицензийПолучено: 2023
WSБронзовыйТихий виджетВиджет подключается к серверу только после открытияПолучено: 2026
Активности
Группа 6 в сети
Кирилл ЛевинЛидер группыВ сети: Лидер отряда · ставит задачу
АнАналитикВ игре: В игре: пишет критерии приёмки
АрАрхитекторВ игре: В игре: строит карту влияния
ИсИсполнительВ игре: В игре: код и тесты группы
РвРевьюерВ игре: В игре: вердикт по diff
ОтОтладчикОтошёл: Ждёт вызова: корневая причина
Агенты работают на Claude Code и Cursor. Решения принимаю я, за код отвечаю лично.
Требования Информация о системе
Минимальные
ОС
удалёнка, гибрид или офис в Санкт-Петербурге
Процессор
код-ревью в команде
Оперативная память
хотя бы один коллега во фронтенде
Видеокарта
макеты в Figma
Сеть
широкополосное подключение к бэкендерам
Рекомендованные
ОС
удалёнка
Процессор
влияние на архитектуру фронтенда
Оперативная память
договорённости о стандартах и автоматические проверки в CI
Видеокарта
сложные интерфейсы: формы, таблицы, редакторы, realtime
Звуковая карта
митапы и обмен знаниями
Дополнительно
AI-инструменты не запрещены
Карьера
v3.0Сохранение · Крупное обновлениеBotHelpFrontend-разработчик · март 2025 — сентябрь 2026
Высоконагруженная SaaS-платформа чат-ботов и мессенджер-маркетинга: массовые рассылки, чаты операторов в реальном времени, конструктор ботов, CRM-интеграции и AI-агенты. Telegram, VK, MAX, WhatsApp.
Журнал
Фронтенд биллинга и четыре платёжных провайдера: расширения тарифа подключают ≈30% платящих клиентов.
Маркетинговый сайт: CTA-блоки с передачей UTM дали +50% переходов на регистрацию.
Написал план рефакторинга, который стал стандартом команды, и перестроил по нему архитектуру слоёв в Nx.
Перевёл growth tools на реестр определений: новый инструмент за 1–2 дня вместо недели.
Автоматизировал data-testid для E2E, команда запустила smoke-автотесты.
Сократил время открытия конструктора ботов на 85%: большой сценарий открывается за 2 с вместо 13.
Переделал основные страницы кабинета, добавил папки и мобильную версию: большие списки показываются на 93% быстрее.
Переработал форматирование сообщений для Telegram, VK и MAX: конвертация HTML ↔ Markdown на уровне AST, крайние случаи покрыты тестами.
Отвечал за архитектуру фронтенда в команде из 5 разработчиков: проводил код-ревью, в том числе Flutter-приложения, менторил двух разработчиков, внедрил AI-assisted разработку.
Стек: Angular 17–22, TypeScript, RxJS, NGXS, Signals, Nx, Jest, GoJS, Web Workers, WebSocket, Svelte 5, Flutter, GitLab CI
v2.0Сохранение · ОбновлениеТ1Frontend-разработчик · июль 2023 — март 2025
IT-холдинг, системная интеграция. Визуальный low-code редактор для CRM, в котором команды внедрения собирают бизнес-сервисы.
Журнал
Ускорил страницы с таблицами на 10k строк: ленивая загрузка данных и модулей, быстрее отрисовка таблиц и графов.
Экраны low-code редактора: динамические формы, настраиваемые таблицы, графы и диаграммы на ECharts, выгрузка отчётов.
Три компонента внутреннего UI-kit: Angular-обёртки над web components на Lit.
Один из двух фронтенд-разработчиков в команде из 20 человек: R&D, технические решения для новых модулей, код-ревью, митапы, помогал с адаптацией двух новых сотрудников.
Стек: Angular 14–18, TypeScript, RxJS, Web Components, Lit, GraphQL, ECharts, Webpack, Vite
v1.0Сохранение · Ранний доступeasstacademyFrontend-разработчик · март 2021 — май 2023
Образовательная онлайн-платформа с курсами.
Журнал
В одиночку разработал фронтенд: сайт курсов, блог, CMS, админку для контента и медиа.
Оплата, вход через OAuth, генерация сертификатов и счетов в PDF.
Пока я там работал, платформа продала больше 200 корпоративных лицензий.
Кирилл Левин (usertrv) — frontend-разработчик из Санкт-Петербурга, 5+ лет коммерческой разработки на Angular. Делаю фичи с измеримым эффектом и слежу, чтобы большое приложение оставалось быстрым и понятным. Провожу код-ревью и менторю разработчиков.[1]
5 лет коммерческого Angular: архитектура, скорость и фичи, эффект которых видно в метриках.
Биография
Ищу команду, где можно влиять на архитектуру фронтенда и где принято делать код-ревью, договариваться о стандартах и автоматизировать проверки. Живу в Санкт-Петербурге: удалёнка, гибрид или офис. Angular — основной стек, к React и Vue тоже открыт.
На английском свободно говорю, читаю и понимаю на слух. ≈1 050 уникальных коммитов в 11 репозиториях[2].
Карьера
BotHelp (март 2025 — сентябрь 2026)
Frontend-разработчик. Высоконагруженная SaaS-платформа чат-ботов и мессенджер-маркетинга: массовые рассылки, чаты операторов в реальном времени, конструктор ботов, CRM-интеграции и AI-агенты. Telegram, VK, MAX, WhatsApp.
Фронтенд биллинга и четыре платёжных провайдера: расширения тарифа подключают ≈30% платящих клиентов.
Маркетинговый сайт: CTA-блоки с передачей UTM дали +50% переходов на регистрацию.
Написал план рефакторинга, который стал стандартом команды, и перестроил по нему архитектуру слоёв в Nx.
Перевёл growth tools на реестр определений: новый инструмент за 1–2 дня вместо недели.
Автоматизировал data-testid для E2E, команда запустила smoke-автотесты.
Сократил время открытия конструктора ботов на 85%: большой сценарий открывается за 2 с вместо 13.
Переделал основные страницы кабинета, добавил папки и мобильную версию: большие списки показываются на 93% быстрее.
Переработал форматирование сообщений для Telegram, VK и MAX: конвертация HTML ↔ Markdown на уровне AST, крайние случаи покрыты тестами.
Отвечал за архитектуру фронтенда в команде из 5 разработчиков: проводил код-ревью, в том числе Flutter-приложения, менторил двух разработчиков, внедрил AI-assisted разработку.
Стек: Angular 17–22, TypeScript, RxJS, NGXS, Signals, Nx, Jest, GoJS, Web Workers, WebSocket, Svelte 5, Flutter, GitLab CI
Т1 (июль 2023 — март 2025)
Frontend-разработчик. IT-холдинг, системная интеграция. Визуальный low-code редактор для CRM, в котором команды внедрения собирают бизнес-сервисы.
Ускорил страницы с таблицами на 10k строк: ленивая загрузка данных и модулей, быстрее отрисовка таблиц и графов.
Экраны low-code редактора: динамические формы, настраиваемые таблицы, графы и диаграммы на ECharts, выгрузка отчётов.
Три компонента внутреннего UI-kit: Angular-обёртки над web components на Lit.
Один из двух фронтенд-разработчиков в команде из 20 человек: R&D, технические решения для новых модулей, код-ревью, митапы, помогал с адаптацией двух новых сотрудников.
Стек: Angular 14–18, TypeScript, RxJS, Web Components, Lit, GraphQL, ECharts, Webpack, Vite
easstacademy (март 2021 — май 2023)
Frontend-разработчик. Образовательная онлайн-платформа с курсами.
В одиночку разработал фронтенд: сайт курсов, блог, CMS, админку для контента и медиа.
Оплата, вход через OAuth, генерация сертификатов и счетов в PDF.
Пока я там работал, платформа продала больше 200 корпоративных лицензий.
Конверсия: Маркетинговый сайт: +50% переходов на регистрацию
Задача. Нужно было превратить трафик блога в регистрации в продукте и не терять атрибуцию при переходе с сайта в приложение.
Решение. Сделал на WordPress CTA-блоки и сайдбар в статьях с передачей ref и UTM, мегаменю и лендинг CRM-интеграции. Перевёл Яндекс Метрику на новый тег, чтобы просмотр гарантированно отправлялся до редиректа, настроил кросс-доменную синхронизацию cookie партнёрской сети и убрал дубли событий Amplitude.
Итог. Переходов с сайта на регистрацию стало на 50% больше, а источники трафика считаются корректно.[1]
Деньги: Биллинг: расширения тарифа подключают ≈30% платящих
Задача. Продукту понадобились платные и бесплатные расширения поверх тарифа. Они должны корректно вести себя в пробном периоде, при истечении, отмене и даунгрейде.
Решение. Сделал фронтенд биллинга: расширения, докупку хранилища и токенов, лимиты, проверку даунгрейда, граничные состояния подписки, мобильную версию. Подключил FastSpring, Робокассу, ЮMoney и ещё одного провайдера.
Итог. Расширения подключают около 30% платящих клиентов. Граничные случаи подписки прошли больше шести итераций с QA.
Скорость разработки: Новый инструмент за 1–2 дня вместо недели
Задача. Около десяти инструментов привлечения подписчиков (виджеты, лендинги, ссылки, автоответы на комментарии) были копиями друг друга. Новый добавлялся неделю.
Решение. Свёл их к реестру определений с общим CRUD-контрактом, фабриками NGXS-состояний и форм-адаптеров и базовыми компонентами. Роуты генерируются из реестра, NgModules удалены, компоненты стали standalone.
Итог. Новый инструмент теперь описывается определением в реестре. По ходу удалил 7.6k строк legacy и заменил snapshot-тесты спеками.
Архитектура: Архитектура фронтенда: план рефакторинга стал стандартом команды
Задача. Большое Angular-приложение в Nx-монорепо росло без чётких границ: фичи тянули друг друга через общие слои, бандл плохо делился на чанки, новые задачи давались всё дороже.
Решение. Провёл аудит и написал поэтапный план рефакторинга, команда приняла его как стандарт. По плану перестроил слои (shared → core → features), перенёс код 20+ модулей к владельцам и закрепил границы правилами ESLint в CI. Все формы перевёл на Typed Forms, панели и меню — на Signals.
Итог. Команда из пяти фронтенд-разработчиков работает по одному стандарту. Нарушений границ модулей стало 15 вместо 99, бандл лучше делится на чанки, сторонняя библиотека форм удалена.
Инструменты для команды: Автотесты на стабильных data-testid
Задача. E2E-тесты держались на хрупких селекторах, а расставлять data-testid вручную в сотнях шаблонов было нереально.
Решение. Написал на Node.js сканер шаблонов, генератор имён по правилам и реестр. Добавил проверку в CI и pre-commit и своё правило ESLint.
Итог. testId генерируются автоматически и проверяются в CI. На этой базе команда запустила smoke-автотесты.
Скорость: Конструктор ботов: время открытия −85%
Задача. Визуальный конструктор сценариев на GoJS — главный экран продукта. Большой сценарий открывался около 13 секунд, компонент страницы разросся до монолита.
Решение. Вынес конвертацию модели диаграммы в Web Worker, разбил страницу на сервисы, переписал рендер и загрузку модели, закрыл гонки синхронизации канваса после переподключения WebSocket.
Итог. Большой сценарий открывается за 2 секунды вместо 13. Оптимизацию главного экрана выпускал поэтапно и с быстрым путём отката.
Стабильность: Стабильное форматирование в Telegram, VK и MAX
Задача. Один текст уходит в три мессенджера, и у каждого своя разметка и свои лимиты длины. Конвертация ломала ссылки, макросы и переносы строк.
Решение. Написал конвертацию HTML ↔ Markdown на уровне AST с экранированием ссылок и макросов, счётчики длины, превью и конвертер старых сообщений Telegram.
Итог. Крайние случаи покрыты тестами, и форматирование одинаково работает во всех трёх мессенджерах.
AI в разработке: Отряд агентов: аналитик, архитектор, исполнитель, ревьюер, отладчик
Задача. AI-инструменты в команде использовались по-разному, и результат зависел от того, кто сидит за клавиатурой.
Решение. Внедрил в команде AI-assisted разработку на Claude Code и Cursor. Агенты с ролями аналитика, архитектора, исполнителя, ревьюера и отладчика ведут задачу по фазам с файлами плана и решений, а команды /implement, /bugfix и /review закрывают типовые сценарии. Правила проекта описывают архитектуру, тестирование, безопасность (входные данные, инъекции, секреты) и работу с git.
Итог. Качество контролируют хуки: фаза не закрывается без реальных прогонов линтера и тестов, опасные git-команды вроде force-push блокируются. Провёл по этому подходу митапы для команды. Решения по-прежнему принимаю я.
Встраиваемый код: Чат-виджет AI-агента на Svelte 5
Задача. Нужен был виджет AI-агента для сайтов клиентов, который не конфликтует с чужой вёрсткой и не создаёт лишней нагрузки.
Решение. Изоляция через Shadow DOM, UTM, брендирование, подключение к WebSocket только после открытия виджета. Собрал монорепо публичных фронтендов на pnpm + Turborepo и перевёл деплой на Shipit.
Итог. У операторов пропали пустые диалоги с каждым посетителем сайта, а у статики появились stage, prod и откат.