Platforma śledzenia statków
KomercyjnyDane 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
Zadanie
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.
O projekcie
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.
Jak to działa
Obramowane elementy to moja część
Co zrobiłem
- —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.