Skip to main content

Architecture Decision Record: CapacitorJS for Multi-Device Shell Packaging πŸ“±πŸ’»

Status​

Decided (May 2026)


Context​

Athena Helm needs to run across multi-screen environments (iOS iPads, Android marine tablets, rugged bridge screens, smartwatches, and local displays on the navigation station). Rewriting separate native Android (Kotlin), iOS (Swift), and Desktop (macOS/C++) applications would result in multi-repo sync debt and slower test iteration loops.


Decision​

We elected to package our single consolidated Vite + React + Tailwind full-stack asset bundle into native wrappers using CapacitorJS for mobile targets, and Electron for bridge computer targets.


Consequences​

  • Unified Codebase: App developers only maintain a single React codebase.
  • High Performance: WebGL/Canvas gauges execute at 60fps within native WebView shells.
  • Offline Reliability: Since assets are bundled directly inside the SQLite/Capacitor data container, launching the app requires zero web requests.
  • Hardware Integrations: Plugins provide direct bridge access to serial Bluetooth, GPS hardware, and WiFi WebSocket feeds on the boat router.