Context

Vesselspro brings vessel, cargo, crew, and maintenance workflows together. The private vesselspro/app-old codebase contains the web app and landing page shown here, with separate AIS and mobile projects in the vesselspro organization.

The problem

Maritime operators need reliable vessel visibility and operational data in one place, not spreadsheets and disconnected tools. The product had to handle real-time tracking context, authenticated multi-tenant access, notifications, and room for AI-assisted workflows.

How we approached it

We structured the web app in Next.js with Drizzle ORM, Better Auth, and localized landing and dashboard views for fleet, crew, maintenance, certificates, and safety. The wider project separated AIS and telemetry into a Bun + Elysia service and explored dedicated iOS and Android clients.

What shipped

  • Web app and landing page in the private vesselspro/app-old repository
  • AIS / data service (vesselspro/ais) with Bun and Elysia
  • iOS and Android app repositories (vessels_ios, vessels_android)
  • Database migrations, auth flows, and i18n-ready message catalogs

Outcomes

  • Unified fleet, cargo, crew, and maintenance workflows in a single SaaS surface
  • Separated AIS ingestion from the main app for clearer scaling and ownership
  • Stack chosen for type safety end-to-end: TypeScript, Drizzle, modern React
  • Platform later moved to private operation; codebase remains our reference for maritime builds

Stack

  • Next.js (App Router, Turbopack)
  • TypeScript
  • Drizzle ORM
  • Neon Postgres
  • Better Auth
  • AI SDK (OpenAI, Google Vertex)
  • Bun
  • Elysia
  • Swift (iOS)
  • Java (Android)