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.