Submersion gives scuba divers full ownership of their logbooks — no proprietary formats, no cloud lock-in, no subscription fees. Track analytics, stats, records, and trends across your dives, all stored locally and exportable to open standards. Free and open-source, forever.
Most dive logging software falls into two categories: desktop applications stuck in the past, or mobile apps that lock your data in proprietary clouds. Submersion is different:
- You Control Your Data — All data is stored locally in SQLite and can be synced across devices through cloud storage. No account required. No cloud dependency. Export everything, anytime.
- Truly Cross-Platform — One app for iOS, Android, macOS, Windows, and Linux. Your logbook works everywhere, with the same details and analytics on all platforms. Available in 10 languages.
- Open Standards — Full UDDF 3.2 import/export. CSV support. No proprietary formats trapping your dive history.
- 300+ Dive Computers supported — Connect via USB or Bluetooth. Powered by libdivecomputer.
- Technical Diving Ready — Bühlmann ZH-L16C decompression, multi-gas support, CNS/OTU tracking, trimix blending, CCR/SCR rebreather support.
- Sync Across Devices — Optional cloud sync via iCloud or Google Drive. No account required — sync is opt-in and your data stays yours.
- Free Forever — Open source under GPL-3.0. No premium tiers for core features. No ads.
Submersion is built on these principles:
- Local-First — Your data lives on your device. The app works offline, always.
- No Lock-In — Export your entire logbook to UDDF or CSV at any time. Switch apps without losing history.
- No Account Required — Use the app immediately. No sign-up, no email, no tracking.
- Open Source — Audit the code. Fork it. Improve it. Your dive log software should be transparent.
- Comprehensive dive entry with depth, duration, temperatures, conditions
- Automatic dive numbering with gap detection and renumbering
- Entry/exit times with surface interval calculation
- Multi-tank support with gas mixes (air, nitrox, trimix)
- Buddy tracking with roles (buddy, guide, instructor, student)
- Trip organization for multi-dive expeditions
- Tags, favorites, and star ratings
- Free-text notes
- Full site database with GPS coordinates
- Interactive maps with clustering
- Capture location from device GPS
- Reverse geocoding for country/region
- Depth ranges, difficulty ratings, hazard notes
- Weather and tide data integration
- 300+ supported dive computers via libdivecomputer
- Bluetooth LE and USB connectivity
- Manufacturer protocols: Shearwater, Suunto, Mares, Aqualung, and more
- Incremental downloads (new dives only)
- Duplicate detection with fuzzy matching
- Multi-computer support with profile selection
Confirmed working: Shearwater Teric, Aqualung i300C, Aqualung i330R. Have a different dive computer? Help us expand this list - we're looking for testers!
- Interactive depth/temperature/pressure/SAC charts with zoom and pan
- Touch markers showing various metrics
- Ascent rate calculation with color-coded warnings
- Profile event markers (descent, safety stop, gas switch)
- SAC/RMV overlay
- Bühlmann ZH-L16C algorithm with gradient factors
- Real-time NDL, ceiling, and TTS calculations
- 16-compartment tissue loading visualization
- CNS% and OTU oxygen toxicity tracking
- ppO₂ curve with warning thresholds
- MOD/END/EAD calculations
- CCR (closed circuit) and SCR (semi-closed) rebreather support
- Dive planner with multi-level profiles, gas planning, and deco schedules
- Track all gear with serial numbers, purchase dates, service intervals
- Service reminders with visual warnings
- Equipment sets ("bags") for quick selection
- Weight calculator based on exposure suit and tank type
- Per-dive gear tracking
- Store all certifications with card numbers and dates
- Agency support: PADI, SSI, NAUI, SDI/TDI, GUE, RAID, and more
- Expiry tracking with warnings
- Instructor and dive center records
- Total dives, bottom time, depth statistics
- Breakdown by year, country, site, dive type
- Personal records: deepest, longest, coldest, warmest
- Depth distribution histograms
- UDDF 3.2 — Universal Dive Data Format, the open standard
- CSV — Spreadsheet-compatible with configurable columns
- Excel — Multi-sheet .xlsx with statistics
- PDF — Printable logbook pages with multiple templates
- KML — Google Earth export with dive site placemarks
- Universal Import — Import from Subsurface, MacDive, Diving Log, DiveMate, and more
- Full database backup and restore (local, iCloud, or Google Drive)
- Flutter SDK 3.5.0 or higher
# Clone the repository
git clone https://github.com/submersion-app/submersion.git
cd submersion
# Initialize submodules (required for libdivecomputer)
git submodule update --init --recursive
# Install dependencies
flutter pub get
# Generate database and serialization code
dart run build_runner build --delete-conflicting-outputs
# Run the app
flutter run -d macos # or: windows, linux, ios, android# iOS
flutter build ios
# Android
flutter build apk
# macOS
flutter build macos
# Windows
flutter build windows
# Linux
flutter build linuxIf you don't have an Apple Developer certificate, you can still build and run the app locally using ad-hoc signing. This creates a non-sandboxed build that works on any Mac.
# Run the no-sandbox build script
./scripts/release/build_nosandbox_macos.shThis script:
- Builds the macOS app with Flutter
- Re-signs it with an ad-hoc signature (no Apple certificate required)
- Applies no-sandbox entitlements for full file system access
The built app will be at build/macos/Build/Products/Release/submersion.app.
Running the app: macOS Gatekeeper will block unsigned apps by default. To run:
- Right-click (or Control-click) on
submersion.app - Select "Open" from the context menu
- Click "Open" in the dialog that appears
You only need to do this once — subsequent launches will work normally.
Note: This build cannot be distributed via the Mac App Store (which requires sandboxing). It's intended for local testing and direct distribution.
Windows builds require no code signing for local use. You need Visual Studio with the Desktop development with C++ workload installed (the free Community edition works).
# Build the app
flutter build windows --releaseThe built app will be at build\windows\x64\runner\Release\.
Note: Windows SmartScreen may show an "unrecognized app" warning for unsigned executables. Click "More info" then "Run anyway" to proceed.
Linux builds require GTK3 and several native development libraries. Install them first:
Debian/Ubuntu:
sudo apt-get update
sudo apt-get install -y \
clang cmake ninja-build pkg-config \
libgtk-3-dev liblzma-dev libstdc++-12-dev \
libsqlite3-dev libsecret-1-devFedora:
sudo dnf install -y \
clang cmake ninja-build pkg-config \
gtk3-devel xz-devel libstdc++-devel \
sqlite-devel libsecret-develArch Linux:
sudo pacman -S --needed \
clang cmake ninja pkg-config \
gtk3 xz sqlite libsecretThen build:
flutter build linux --releaseThe built app will be at build/linux/x64/release/bundle/.
Submersion follows clean architecture principles with clear separation of concerns:
lib/
├── core/ # Shared infrastructure
│ ├── database/ # Drift ORM schema and migrations
│ ├── deco/ # Decompression algorithms
│ ├── router/ # Navigation (go_router)
│ ├── services/ # Location, weather, database services
│ └── theme/ # Material 3 theming
├── features/ # Feature modules
│ ├── dive_log/ # Core dive logging
│ ├── dive_sites/ # Site management & maps
│ ├── dive_computer/ # Device connectivity
│ ├── equipment/ # Gear tracking
│ ├── statistics/ # Analytics & records
│ └── ... # Additional features
└── shared/ # Reusable widgets
Tech Stack:
- Flutter — Cross-platform UI framework
- Riverpod — Reactive state management
- Drift — Type-safe SQLite ORM with migrations
- go_router — Declarative navigation
- fl_chart — Interactive charts for profiles and statistics
- flutter_map — OpenStreetMap integration
- libdivecomputer — FFI bindings for dive computer communication
See ARCHITECTURE.md for detailed documentation.
| Version | Status | Highlights |
|---|---|---|
| v1.0 | Complete | Core logging, sites, gear, statistics, UDDF/CSV/PDF |
| v1.1 | Complete | GPS integration, maps, tags, profile zoom/pan |
| v1.5 | Nearly Complete | Dive computer connectivity, deco algorithms, O₂ tracking, cloud sync, photos, 10 languages |
| v2.0 | Planned | Community features, social sharing, advanced analytics, partner integrations |
See FEATURE_ROADMAP.md for the complete development plan.
Contributions are welcome! Submersion is built by divers, for divers.
- Fork the repository
- Clone and initialize submodules:
git clone --recurse-submodules <your-fork-url> - Create a feature branch:
git checkout -b feature/your-feature - Make your changes with tests
- Submit a pull request
Please run flutter analyze and flutter test before submitting.
Submersion is free software, released under the GNU General Public License v3.0.
You are free to use, modify, and distribute this software. If you distribute modified versions, you must also release the source code under GPL-3.0.
See LICENSE for the full text.
Submersion builds on the work of the dive logging community:
- libdivecomputer — The open-source library powering dive computer communication
- Subsurface — Inspiration and the UDDF format
- Flutter — Cross-platform framework making this possible
Dive safe. Log everything. Own your data.