All work
Ulstein Group

Ulstein Fleet

Maritim flåtedashbord for MRV-compliance, NOx-rapportering og sanntids fartøysporing — bygget for Ulstein Group.

Role
Utvikler (Agens)
Tags
Dashboard · Maritime · Next.js · TypeScript · Drizzle · PostgreSQL · NextAuth · Azure
Ulstein-fartøy seiler i norsk fjord ved solnedgang med snødekte fjell i bakgrunnen

Ulstein Fleet er et internt B2B-dashbord som gir Ulstein Groups flåteoperatører ett sted å håndtere MRV-rapportering (Monitoring, Reporting and Verification), NOx-utslipp, bunkerleveranser og noon-rapporter. Alle modulene kommuniserer mot et .NET-basert MRV-baksystem på Azure og presenterer aggregerte data i et Next.js-grensesnitt.

Hva jeg jobbet med

Prosjektet er et aktivt klientoppdrag der jeg bidrar på tvers av hele frontend-stacken:

  • MRV-rapportering — oversikter og innsendingsflyt for reiser, med validering av bunkerleveringsnotater (BDN) og AI-assistert dokumentutvinning via LangSmith.
  • NOx-modul — beregning og visning av NOx-faktor, utslippsreduksjon og estimert avgift til NOx-fondet for norske farvann.
  • Bunker-modul — registrering og oppfølging av bunkerleveranser, inkludert filopplasting av BDN-dokumenter.
  • Flåteoversikt og fartøysporing — interaktivt kart (Leaflet) og 3D-globus (React Three Fiber via @ulstein/modules) med sanntidsposisjoner og statusindikator per fartøy.
  • Utslippsanalyse — tverrfartøy-dashboard for å analysere og sammenligne utslippsdata over tid.
  • Bruker- og organisasjonsstyring — invitasjonsflyt, rollebasert tilgangskontroll og plattformadministrasjon.
  • Internasjonalisering — komplett i18n på engelsk, norsk bokmål og nynorsk med next-intl.

Tekniske løsninger

Autentisering er delegert til Microsoft Azure Entra ID via NextAuth.js med statsløse JWT-sesjoner — ingen passord lagres lokalt. Frontend-databasen (Drizzle ORM + PostgreSQL) brukes utelukkende for auth-tilstand, feature flags og UN/LOCODE-data; selve MRV-dataene eies av baksystemet.

CI/CD kjøres gjennom Azure DevOps Pipelines med separate Development-, QA- og Production-miljøer. Kodebasen bruker Vitest for enhetstester og Playwright for E2E-tester med full auth-bypass for lokale testkjøringer.

Stack

Next.js 15 · TypeScript 5 · Tailwind CSS 4 · Drizzle ORM · PostgreSQL · NextAuth.js · Microsoft Azure Entra ID · Playwright · Vitest · next-intl · Azure DevOps

Innloggingsskjerm med Microsoft Azure Entra SSO-knapp og Ulstein-logo — fartøyhero i bakgrunnen
Nexans Aurora kabelfartøy i norsk fjord omgitt av snødekte fjell
Luftfoto av Island Constructor konstruksjonsfartøy til sjøs