Dartmouth Ocean Technologies

Dartmouth Ocean Technologies unifies their oceanographic sensor tools and accelerated feature delivery with Flutter

Success metrics

3

legacy codebases unified into a single Flutter app

1

Engineer required for the migration

Dartmouth Ocean Technologies Inc. (DOT) develops advanced oceanographic sensors and autonomous water sampling systems designed to reveal what is happening beneath the ocean surface. From autonomous environmental DNA (eDNA) samplers that detect marine species through their genetic traces, to Lab-on-Chip (LOC) sensors tracking chemical parameters such as phosphate, nitrate, and total alkalinity in real time, DOT provides marine scientists and researchers with eyes and ears underwater.

DOT Nitrate-Phosphate Sensor app plotting deployment data over time

As their product portfolio expanded, DOT faced an operational and engineering challenge: maintaining three separate desktop graphical user interfaces (GUIs) across three distinct languages and toolchains: Python, C#, and LabVIEW. For a lean engineering team, maintaining separate codebases created duplicated development effort, heavy testing overhead, and inconsistent user experiences across instruments. In addition, the software needed to communicate reliably with physical sensor hardware over serial (USB and RS-232) and Ethernet interfaces for real-time field data collection and calibration. DOT needed a modern, multi-platform framework that could standardize their tooling, deliver high-performance serial communication without fighting native plugins, and provide a clear growth path to new platforms without starting from scratch.

Why Flutter? Unifying Fragmented Desktop Toolchains

Dartmouth Ocean Technologies chose Flutter to eliminate fragmented toolchains and consolidate desktop development into a single, high-performance codebase. When evaluating frameworks, the team prioritized single-codebase portability, UI flexibility, and developer efficiency. Flutter checked every box, allowing them to target their primary operating system, Windows, while maintaining seamless compatibility with macOS and Linux.

DOT Total Alkalinity Sensor app in admin mode with a live terminal panel

The developer experience with Dart and Flutter proved to be an immediate catalyst for productivity. Dart's strong type safety and gentle learning curve enabled the team to ramp up rapidly. Flutter's hot reload feature emerged as the single biggest productivity win, allowing developers to modify sensor interfaces, inspect live telemetry changes, and isolate bugs far faster than previously possible in their fragmented environments. Furthermore, Flutter's rich pub.dev ecosystem provided robust, pre-built packages for hardware communication, state management, and charting, while Flutter DevTools made inspecting custom, data-heavy widget trees straightforward.

Building with Flutter: Real-Time Telemetry and Hardware Multiplexing

To validate Flutter for mission-critical marine instrumentation, Senior Electrical Engineer Andre Hendricks first built a proof-of-concept application interfacing with the company's autonomous eDNA sensor, a breakthrough system published in ScienceDirect. The prototype demonstrated Flutter's capability to communicate reliably over both serial and Ethernet interfaces, execute high-speed file transfers, command the sensor during active deployments, and visualize incoming datasets in real time.

DOT Total Alkalinity Sensor connection screen with serial and Ethernet setup and a cable guide

Following this success, DOT initiated a comprehensive unification initiative in August 2025. Supported by two company scientists, Andre ported all of DOT's disparate sensor GUIs into a single, cohesive Flutter desktop application. By February 2026, just six months after starting, the team completed and shipped the unified application.

To ensure deterministic communication with oceanographic sensors, the team engineered a central communication module (serialCom) in Flutter that manages all serial port interactions:

  • Broadcasting incoming data: Using Dart streams, the module reads data from the serial port and broadcasts incoming packets to downstream subscribers across the application, preventing redundant open connections.
  • Centralizing message processing: Raw character streams are parsed into structured strings within the central module before dispatching to UI consumers, eliminating duplicate processing and keeping CPU usage minimal.
  • Queuing outgoing commands: Outgoing commands are regulated through a dedicated queue within the module, preventing command collisions and avoiding bus congestion on physical serial interfaces.

For real-time visualization, DOT coupled the stream architecture with the flutter_bloc package, updating interactive live plots reactively without tightly coupling UI components to communication logic. Crucially, incoming telemetry data is specially encoded to share the exact same physical serial communication channel as standard command-and-response traffic. This enables continuous, real-time plotting while diagnostic and operational commands proceed uninterrupted over a single physical connection.

Looking forward, Flutter provides DOT with a direct foundation for expansion into web platforms, enabling marine scientists worldwide to access live sensor data, record metadata, and track long-term ocean environmental trends from any browser without requiring an application rewrite.

Key results and business impact

By standardizing on Flutter, Dartmouth Ocean Technologies transformed their software architecture and accelerated product delivery:

  • 100% codebase unification: Unified three disparate legacy codebases (Python, C#, and LabVIEW) into a single, maintainable Flutter application.
  • Shipped in 6 months: Unified all instrument GUIs and shipped the production application to clients in just six months with a lean team of one engineer and two scientists.
  • Streamlined build and maintenance: Replaced three disjointed toolchains and fragmented testing workflows with a single build pipeline, drastically cutting long-term maintenance overhead.
  • Multiplexed real-time telemetry: Architected a stream-based serial communication module using flutter_bloc that multiplexes live data plotting over a single serial channel without compromising UI responsiveness.
  • Future-ready cross-platform growth: Established a scalable foundation ready to extend to web dashboards for global scientific collaboration without rewriting core application logic.