Алексей Нижгородов | Frontend Engineer
Frontend Engineer
Алексей Нижгородов

Алексей Нижгородов

Frontend Engineer

Сложный фронтенд, где много данных и реалтайма.

Frontend-инженер, четвёртый год в коммерческой разработке. Реалтайм, дашборды, карты и всё, где данных больше обычного.

TypeScript ✲ React ✲ Svelte ✲ JavaScript ✲ ES6+ ✲ Leaflet ✲ WebGL ✲ Canvas ✲ ECharts ✲ Recharts ✲ QGIS ✲ MobX ✲ Redux ✲ Zod ✲ REST ✲ WebSocket ✲ SSE ✲ Vite ✲ Webpack ✲ Capacitor ✲ PWA ✲ Service Worker ✲ Docker ✲ Nginx ✲ CI/CD ✲ Vitest ✲ React Testing Library ✲ Playwright ✲ TypeScript ✲ React ✲ Svelte ✲ JavaScript ✲ ES6+ ✲ Leaflet ✲ WebGL ✲ Canvas ✲ ECharts ✲ Recharts ✲ QGIS ✲ MobX ✲ Redux ✲ Zod ✲ REST ✲ WebSocket ✲ SSE ✲ Vite ✲ Webpack ✲ Capacitor ✲ PWA ✲ Service Worker ✲ Docker ✲ Nginx ✲ CI/CD ✲ Vitest ✲ React Testing Library ✲ Playwright ✲

Обо мне

Frontend-инженер, четвёртый год в коммерческой разработке. Люблю сложное: реалтайм по WebSocket, дашборды с тонной данных, карты, WebGL.

Вёл команды из 2–4 фронтендеров: ревью, менторинг, ввод новичков, технические встречи с заказчиками. На других продуктах был единственным фронтом.

Закончил магистратуру ВШЭ по цифровой урбанистике: аналитика данных, геоданные, управление городскими проектами. Открыт к предложениям.

Все проекты

01

Edya — кабинет коммерческого веб-сервиса

Фронтенд и архитектура· 2026

Кабинет подписочного веб-сервиса, в проде, около 20 тысяч MAU. Вход через OAuth/OTP, активация на 6 платформах одной ссылкой, перенос подписок из Telegram-бота, свой слой отказоустойчивости. White-label: восемь брендов из одной кодовой базы.

≈20 тыс. MAU−62% к бандлу (1706→656 КБ)8 white-label брендов6 платформ активации
  • Сервису нужен был кабинет сразу под несколько брендов. Собрал весь SPA: восемь брендов из одной кодовой базы, новый добавляется парой конфигов, каждый ответ API проходит проверку схемой.
  • Кабинет должен открываться, даже когда основной домен недоступен. Service worker на каждом переходе сверяется со списком зеркал и незаметно уводит на живое, старые ссылки из бота и закладок тоже доводят до кабинета. Сборка обфусцирована.
  • Подписки из старого Telegram-бота переезжают в веб-аккаунт за пять шагов, вместе с оплатой и остатком дней. Повторный перенос и чужие аккаунты флоу отлавливает сам.
  • Бандл раздулся от Firebase, Lottie и QR. Разрезал его по страницам и вынес тяжёлое в отдельные ленивые чанки: стартовый вес упал с 1706 до 656 КБ, по gzip с 467 до 175.
  • Продуктовые события, ошибки и падения API собираются в PostHog, срезы по бренду, платформе и релизу.
React 19TypeScriptViteTanStack RouterMobX 6Tailwind 4ZodFirebase AuthService WorkerDocker
02

EdyaAI — AI-суперапп в Telegram

Фронтенд: реалтайм, платежи, чат · командный проект· 2025 — 2026

Midjourney, GPT-Image и LLM-чат в одном Telegram Mini App. Я отвечал за WebSocket-движок генераций, платежи и интеграцию легаси-чата.

реалтайм-генерация по WebSocketMidjourney + GPT-Image + LLMплатная подписка в проде
  • Генерации показывают живой прогресс: написал свой WebSocket-клиент, который ведёт каждый запрос отдельно и сам переподключается. Обрыв связи не теряет ни одной генерации.
  • Кроме простой генерации дал весь набор инструментов Midjourney: вариации, апскейл, зум, панорама, смешивание картинок. История хранится деревом, ветвиться можно от любого шага.
  • Монетизация целиком моя: тарифы, подписки, промокоды, оплата. Реальные деньги в проде.
  • Старый чат встроил в новое приложение через iframe с полной интеграцией, вплоть до вибраций и клавиатуры. Деплой поднял сам. Для пользователя шов незаметен.
React 19TypeScriptMobX 6TanStack RouterTelegram Mini Apps SDKZodWebSocketSSENext.js 15Docker
03

Картография и реалтайм-мониторинг

NDA

Frontend · слой карт и рендер

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

  • Карта должна держать тысячи маркеров и длинные треки. Написал свою логику слоёв и рендер на Canvas и WebGL: кластеризация, прореживание. Даже на больших объёмах не проседает.
  • Для мониторинга добавил живое обновление маркеров, геозоны и треки с таймлайном: оператор мотает историю перемещений по времени.
  • Вынес карту в набор компонентов с единым API. Сейчас на нём работает несколько продуктов команды.
TypeScriptReactLeafletWebGLCanvasMobX
04

B2B-аналитика предсменных медосмотров

NDA

Фронтенд, BFF и схема данных· 2026

За ~2 недели поднял серверную прослойку, устойчивую загрузку данных и ~20 клинических дашбордов поверх медтерминалов: своя карта России, RBAC на чтении медданных, классификация давления по российскому стандарту прямо в SQL.

~20 клинических дашбордовустойчивая загрузка данныхRBAC на медданныеMVP за 2 недели
  • С нуля до MVP за две недели. Фронт и его серверная прослойка (BFF) живут в одном монорепо с общими схемами данных: типы сквозные от БД до интерфейса, доступы к внешнему API не попадают в браузер.
  • API медтерминалов нестабильный, а терять записи нельзя. Сделал загрузку, которая сама повторяет неудачные попытки, пережидает серии сбоев и продолжает с места остановки. Ничего не теряется и ничего не надо перезапускать руками.
  • Медданные нельзя просто спрятать в интерфейсе. Разделил их на уровне базы и чтения: роль без допуска медицинские поля даже не читает из БД, до браузера они не доезжают.
  • Под растровый силуэт России готового движка карт не было. Написал свою привязку координат к картинке и компонент карты с пузырями и проваливанием в регионы.
TypeScriptReactMobXEChartsNode + ExpressDrizzle ORMPostgreSQLZodDocker
05

Платформа видеоаналитики

NDA

Frontend · архитектура с нуля, ревью команды

Фронтенд системы видеонаблюдения и аналитики, спроектированный с нуля: TypeScript, React, MobX. Дальше ревью и менторинг команды.

  • Фронтенд строил с нуля: спроектировал архитектуру на TypeScript, React и MobX, задал паттерны. Команда дальше собирает фичи на этой базе, я вёл ревью и менторил.
  • Дашборды на Recharts обновляются вживую, без перезагрузок.
  • Большие списки тормозили: виртуализировал, закешировал тяжёлые вычисления, нашёл и вычистил утечки памяти.
TypeScriptReactMobXWebSocketsRecharts
06

PDF-генератор отчётов (своя библиотека)

NDA

Frontend · автор библиотеки

Своя библиотека отчётов из React-компонентов: печатает WebGL-карты и графики в PDF, сама нумерует страницы и ставит колонтитулы. Написал её, когда jsPDF и react-pdf не потянули.

  • Отчётам нужны были карты и графики, а jsPDF и react-pdf не умеют ни WebGL, ни сложную вёрстку. Написал библиотеку, которая собирает PDF прямо из React-компонентов, вместе с WebGL-картами. Отчёты выглядят как UI продукта.
  • Многостраничные отчёты получают нумерацию и колонтитулы автоматически, документы сразу готовы к печати.
  • Слой рендера один: те же React-компоненты идут и на экран, и в PDF, так что интерфейс и отчёты не расходятся.
TypeScriptReactWebGLCanvasjsPDF
07

Геймифицированный трекер задач для детей

NDA

Frontend · два клиента + натив на Capacitor, вёл нативную команду

Дашборд на большом сенсорном экране и PWA для родителей, два клиента с общим состоянием. Вёл команду, которая заворачивала это в нативные приложения на Capacitor.

  • Продукт живёт на двух очень разных клиентах: геймифицированный дашборд на сенсорном экране и PWA для родителей. Спроектировал оба вокруг общего состояния с живой синхронизацией, экран и телефон всегда показывают одно и то же.
  • До сторов и Android TV продукт довела команда, которую я вёл: веб завернули в нативные приложения на Capacitor под iOS, Android и Android TV.
  • Service Worker даёт офлайн и автообновление: приложение работает без сети и обновляется само.
TypeScriptReactPWACapacitorWebSocketsService Worker
08

Планшет обратной связи у окна

NDA

Frontend · архитектура MVP· 2026

За ~4 дня собрал планшет, который сам ловит вызов из очереди по WebSocket (без relay-бэкенда), развлекает и показывает контекстную рекламу во время приёма, а в конце собирает официальную оценку качества обслуживания.

WebSocket-очередь без relayофиц. опрос качестваMVP за 4 дня
  • Планшет должен сам понять, что вызвали именно его окно, а промежуточного бэкенда нет. Клиент слушает общую очередь по WebSocket, сравнивает её состояния и сам вычисляет вызов, повтор и завершение для своего окна.
  • Опрос иногда показывался дважды: таймер-подстраховка спорил с реальным завершением от оператора. Вылечил конечным автоматом с защитой от устаревших событий.
  • Ожидание у окна занимает контекстная реклама по эвристике «услуга → жизненная ситуация» и мини-игра, которая подстраивает сложность под время реакции. Играют даже пожилые.
  • Анимации подёргивались. Переписал прогресс-бар так, чтобы его рисовала видеокарта без пересчёта вёрстки: идёт плавно.
React 18TypeScriptViteWebSocketEmotionFramer MotionFeature-Sliced

Бэкграунд

Опыт

Perfema

Perfema

2023 — н.в.

Frontend Developer

Основное место работы, продукты с нуля. Вёл команды из 2–4 фронтендеров: ревью, менторинг, ввод новичков, технические встречи с заказчиками. Карты, дашборды, аналитика, нативные приложения, своя PDF-библиотека.

Edya

Edya

март 2025 — июль 2026

Frontend · парттайм

Парттайм: кабинет веб-сервиса на ≈20 тыс. MAU (white-label на восемь брендов, своя отказоустойчивость) и AI-суперапп в Telegram (живые генерации, платежи).

Яндекс

Яндекс

2023

Асессор-разработчик

Размечал материалы по программированию и CS для YandexGPT: писал и правил эталонные ответы, проверял факты.

Образование

ВШЭ

ВШЭ

2024 — 2026

Магистратура, Цифровая урбанистика

Пошёл осознанно: всегда была интересна урбанистика. Внутри оказалось много геоаналитики (Python, геоданные, QGIS), а ещё управление проектами в городской сфере и градостроительное законодательство. Так что если нужно сделать красивую картосхему или снести завод по механизму КРТ, обращайтесь!

Диплом (ВКР) ↗
МИСиС

МИСиС

2020 — 2024

Бакалавриат, Информационные системы и технологии

Фундамент: алгоритмы, структуры данных, инженерия ПО. Призовые места на хакатонах: 2-е на ЛЦТ 2023, МТС True Tech Hack, Цифра Fest, X-MAS Hack.

ЛЦТ 2023 (2-е место) ↗

Контакты

Алексей Нижгородов

Aleksei Nizhgorodov | 2026