Заказчик: itBoat — международный маркетплейс яхт и катеров (itboat.com).
Идея: у команды три копии проекта — боевая, тестовая и локальная. Чтобы проверять доработки на реальных данных, базу и файлы переносили вручную: это занимало часы и легко ломалось. Нужен был инструмент, который делает это в один клик и умеет откатывать назад.
Что умеет:
— копирует базы данных целиком или частично: только нужные таблицы или записи за выбранный период;
— переносит загруженные файлы и картинки;
— показывает ход выполнения в реальном времени;
— отменяет операцию и возвращает данные обратно, если что-то пошло не так;
— проверяет целостность связей в базе после переноса;
— хранит резервные копии в облачном хранилище.
Что я сделал:
— разработал сервис целиком: серверную часть, веб-панель администратора и консольную утилиту;
— сделал консольную программу для Windows, macOS и Linux, которая обновляется сама;
— защитил доступ: авторизация по токенам, ограничение частоты запросов, проверка прав на опасные операции с боевыми данными.
Результат: ручной перенос данных полностью исчез — всё делается через интерфейс или одной командой.
Технологии: NestJS, Node.js, TypeScript, React, PostgreSQL, MySQL, Docker, S3, WebSocket.