Skip to content

Architecture

Werkhausen, Malte edited this page Jul 7, 2026 · 1 revision

Architecture

MyShip is organised as an npm-workspaces monorepo.

myship/
├── apps/
│   ├── server/   # Node.js / TypeScript gateway (SignalK, MQTT, REST API, VDR)
│   └── client/   # Angular app — Web, iOS (Capacitor) and Desktop (Electron)
├── docs/         # Design assets, REST API Postman collection, integrations
├── LICENSE       # GNU GPL v3
└── package.json  # Workspace root

Components

Project Path Stack
Server (gateway) apps/server Node.js, TypeScript, Express, SignalK, MQTT (aedes), TypeORM
Client apps/client Angular 18, Capacitor (iOS), Electron (Desktop)

Server / Gateway

The gateway ingests and normalises vessel data. It speaks SignalK for marine data, brokers messages over MQTT (via the embedded aedes broker), exposes a REST API (Express) and persists data through TypeORM. It also handles the VDR (voyage data recording) responsibilities.

Client

A single Angular 18 codebase targets three platforms:

  • Web — served directly
  • iOS — packaged with Capacitor
  • Desktop — packaged with Electron

Clone this wiki locally