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



