Przejdź do treści
Tsimafei Yefimenka
← Wszystkie projekty

Platforma śledzenia statków

Komercyjny

Dane ze statku w czasie rzeczywistym na modelu 3D: pokłady, kamery, węzły

Rola
Inżynier: interfejs 3D, dashboard, warstwa GraphQL i odbiór telemetrii
Klient
objęty NDA
Okres
09.2021 — 09.2022, Godel Technologies Europe
Stack
React, Redux, TanStack Query, GraphQL, Apollo Client, TypeScript, Node.js, TimescaleDB, UDP, Docker, Jest, Playwright, GitHub Actions

Statek wysyła telemetrię bez przerwy, przez UDP, bez potwierdzeń i bez zapytań z naszej strony. Ten strumień trzeba przyjąć, zapisać i pokazać operatorowi tak, żeby widział stan konkretnego węzła na konkretnym pokładzie.

System monitoringu floty w czasie rzeczywistym. Telemetria idzie ze statku przez UDP: backend na Node parsuje strumień do TimescaleDB, a front pobiera dane przez GraphQL i Apollo Client. Interfejs zbudowany wokół modelu 3D statku złożonego z modeli klienta: przełączanie po pokładach, kamery i węzły na swoich miejscach, odczyty ze wszystkich dostępnych czujników. Obok mapa całej floty i dashboard każdej jednostki.

UDP, ciągleznormalizowany cacheStatekczujniki, kameryParser Nodeparsowanie datagramówTimescaleDBszeregi czasoweGraphQLApolloInterfejs 3Dpokłady, węzły, mapa

Obramowane elementy to moja część

  • —Model 3D statku jako główny interfejs: przełączanie po pokładach, kamery tam, gdzie są zainstalowane, odczyty ze wszystkich dostępnych węzłów.
  • —Telemetria po UDP: backend parsuje strumień do TimescaleDB i oddaje frontowi przez GraphQL, a nie zapytaniem na każdy datagram.
  • —Ciągły strumień z 50+ statków naraz, pozycje wszystkich jednostek na wspólnej mapie.
  • —Podgląd wideo z kamer pokładowych prosto z modelu i dashboard konkretnego statku.
  • —Apollo Client ze znormalizowanym cache, dzięki czemu przy stale napływających aktualizacjach interfejs nie przerysowywał się w całości.