К содержимому
Tsimafei Yefimenka
← Все проекты

Платформа слежения за судами

Коммерческий

Данные с судна в реальном времени поверх 3D-модели: палубы, камеры, узлы

Роль
Инженер: 3D-интерфейс, дашборд, GraphQL-слой и приём телеметрии
Заказчик
не разглашается
Период
09.2021 — 09.2022, Godel Technologies Europe
Стек
React, Redux, TanStack Query, GraphQL, Apollo Client, TypeScript, Node.js, TimescaleDB, UDP, Docker, Jest, Playwright, GitHub Actions

Судно шлёт телеметрию непрерывно, по UDP, без подтверждений и без запросов с нашей стороны. Этот поток нужно принять, сохранить и показать оператору так, чтобы он видел состояние конкретного узла на конкретной палубе.

Система мониторинга флота в реальном времени. Телеметрия идёт с судна по UDP: бэкенд на Node парсит поток и складывает в TimescaleDB, фронт забирает данные через GraphQL и Apollo Client. Интерфейс строится вокруг 3D-модели судна, собранной из моделей заказчика: переключение по палубам, камеры и узлы на своих местах, показания по всем доступным датчикам. Отдельно есть карта со всеми судами и дашборд с состоянием каждого.

UDP, непрерывнонормализованный кэшСуднодатчики, камерыNode-парсерразбор датаграммTimescaleDBвременные рядыGraphQLApollo3D-интерфейспалубы, узлы, карта

Обведённые блоки я делал сам

  • —3D-модель судна как основной интерфейс: переключение по палубам, камеры на тех палубах, где они есть, показания по всем доступным узлам.
  • —Приём телеметрии по UDP: бэкенд парсит поток и пишет в TimescaleDB, во фронт данные отдаются по GraphQL, а не по запросу на каждую датаграмму.
  • —Непрерывный поток с 50+ судов одновременно, позиции всех судов на общей карте.
  • —Просмотр видео с судовых камер прямо из модели и дашборд с состоянием конкретного судна.
  • —Apollo Client с нормализованным кэшем: поверх постоянно идущих обновлений интерфейс не перерисовывался целиком.