Все кейсы

Миграция платформы на React и NestJS

Переписал ядро o5.Еда с PHP/jQuery на TypeScript/React/NestJS. Модульная архитектура, типизированный API, 500+ бизнес-клиентов без простоя при переходе.

ReactTypeScriptNestJSNode.js
Миграция платформы на React и NestJS

Задача

o5.Еда обслуживала 500+ ресторанов по России, но кодовая база - монолит на PHP и jQuery, выросший из MVP.  Тестов не было, фичи добавлялись по 3-4 недели, а новый разработчик неделями разбирался в коде.  Надо было переписывать, но без остановки продакшена.

Решение

Я выбрал strangler fig pattern - старая и новая системы работают параллельно, Nginx раскидывает запросы.  Каждый спринт брал один модуль, переписывал на React + NestJS и покрывал тестами.  API вынес в отдельный сервис на NestJS с типизацией и автогенерацией Swagger.  На фронте - React Query для серверного состояния, кастомные хуки для переиспользования логики.  Настроил CI/CD через GitLab - линтинг, тесты, деплой по мержу.

Результат

За 8 месяцев перевел все 500+ клиентов без простоя.  Скорость разработки фич выросла в 3 раза, покрытие тестами дошло до 70%.  Деплой стал автоматическим - 5 минут вместо 40 минут ручной работы.

319

Похожие кейсы

Пайплайн транскодирования аудио
Серверный пайплайн: загрузка FLAC/MP3/OGG, транскодирование в нужные форматы, стриминг через S3. Lossless воспроизведение в браузере с любого устройства.
NuxtTypeScriptS3Node.js
Интеграция каталога MusicBrainz
Подключил каталог MusicBrainz (127 000+ артистов), скробблинг в ListenBrainz, Telegram Mini App для мобильного доступа к библиотеке.
NuxtTypeScriptTelegram Mini App
SEO-архитектура для сайтов доставки
Отдельные страницы товаров с Schema.org разметкой, SSR, мета-теги. Клиентские сайты выходят в топ Google по локальным запросам.
NuxtTypeScriptTailwind CSS
Онлайн-оплата без комиссии для ресторанов
Интеграция прямого эквайринга для клиентов SaaS-платформы доставки еды. 0% комиссии на заказы вместо 3-5% у агрегаторов.
NuxtTypeScriptNode.js

Нужно решить похожую задачу?

Напишите - обсудим ваш проект или идею.

© 2026 Николай Косарев