PRIME FC Mini League
PRIME FC Mini 4-a-side League 2026 — fixtures, results and live table.
Translation pending
Free, open-source dive software. 350+ dive computers, Bühlmann ZH-L16C with gradient factors, OC/CCR/SCR planning, UDDF 3.2 and nine other import formats, end-to-end encrypted sync through your own cl
Translation pending
Sports & fitnessGitHub @submersion-appOnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
Repository information has not been collected yet.
No updates detected yet. GitHub releases will appear here.
Submersion Dive Log
Translation pending
Taken from the repository README
Loading the full README.
Read the full README ↗Download your dive computer, check the deco on the profile, plan tomorrow's dive with the gas you actually have, log who you dove with and what you saw, and keep every bit of it on your own hardware. Rec or tech, single tank or rebreather, it all fits in the same logbook.
Free and open source, on iOS, Android, macOS, Windows and Linux.
Every dive, fully detailed and in your control.
Serious technical-diving instrumentation.
Download straight from your computer.
Will it work with my computer? The support matrix lists every model, the connections each platform can use, and what divers have reported. Tried one that is not verified yet? Tell us how it went.
Where you dove, and what lives there.
Plan with the gas, gear and tissues you will actually have.
The rest of what a dive leaves behind.
See your diving life at a glance.
No server. No account. No lock-in.
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:
New to Submersion? The user guide covers everything from your first dive to sync and backup.
Want fixes and features weeks early? Every change merged into Submersion is published as a beta build. Betas may upgrade your dive log's database ahead of the stable release; downgrading is not supported, and devices that sync together should all use the same channel. A backup is taken automatically before any database upgrade.
Submersion is built on these principles:
Beyond what the screens above show.
# 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
Building on macOS without an Apple Developer account?
flutter run -d macosbuilds the Debug configuration, which is pinned to the maintainer's signing team and will fail withNo profiles for 'app.submersion' were found. See running a debug build without an Apple Developer account below. Linux, Windows, Android and the iOS Simulator need no signing setup.
# iOS
flutter build ios
# Android
flutter build apk
# macOS
flutter build macos
# Windows
flutter build windows
# Linux
flutter build linux
flutter run -d macos builds the Debug configuration. On macOS that
configuration pins CODE_SIGN_IDENTITY to Apple Development against the
maintainer's Apple Developer team, so without access to that team Xcode cannot
issue a provisioning profile and the build stops with:
error: No profiles for 'app.submersion' were found: Xcode couldn't find any
Mac App Development provisioning profiles matching 'app.submersion'.
Substituting your own team is not sufficient: macos/Runner/DebugProfile.entitlements
requests an iCloud container, push notifications, an app group and a keychain
access group, all of which are tied to the maintainer's account, and the
app.submersion App ID is already registered and cannot be claimed by another
team.
Sign the debug build ad-hoc instead. This requires no Apple account. Make both of the following local edits.
1. Sign the Debug configuration ad-hoc. In Xcode, open
macos/Runner.xcodeproj, select the Runner target, go to
Signing & Capabilities > Debug, uncheck Automatically manage signing
and set Team to None. To edit
macos/Runner.xcodeproj/project.pbxproj by hand instead, find the Runner
target's Debug configuration (the block containing
CODE_SIGN_ENTITLEMENTS = Runner/DebugProfile.entitlements; that ends with
name = Debug;) and change three settings:
- CODE_SIGN_IDENTITY = "Apple Development";
+ CODE_SIGN_IDENTITY = "-";
- CODE_SIGN_STYLE = Automatic;
+ CODE_SIGN_STYLE = Manual;
- DEVELOPMENT_TEAM = 8U3RSKF42Q;
+ DEVELOPMENT_TEAM = "";
2. Remove the account-bound entitlements. Replace
macos/Runner/DebugProfile.entitlements with the sandbox permissions that do
not depend on a developer account:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>com.apple.security.app-sandbox</key>
<true/>
<key>com.apple.security.cs.allow-jit</key>
<true/>
<key>com.apple.security.device.bluetooth</key>
<true/>
<key>com.apple.security.device.camera</key>
<true/>
<key>com.apple.security.device.serial</key>
<true/>
<key>com.apple.security.device.usb</key>
<true/>
<key>com.apple.security.files.user-selected.read-write</key>
<true/>
<key>com.apple.security.network.client</key>
<true/>
<key>com.apple.security.network.server</key>
<true/>
<key>com.apple.security.personal-information.location</key>
<true/>
<key>com.apple.security.personal-information.photos-library</key>
<true/>
</dict>
</plist>
flutter run -d macos then builds and runs with hot reload. iCloud sync, push
notifications and Google Sign-In are unavailable in this build; dive logging,
the database, dive computer downloads over Bluetooth and USB, and file
import and export all work.
Keep these edits out of your pull requests. Both files are tracked. Do not stage them, and restore them before you push:
git restore macos/Runner.xcodeproj/project.pbxproj macos/Runner/DebugProfile.entitlements
Other platforms need no signing setup. Linux, Windows and Android build from a
clean checkout as-is, and so does the iOS Simulator: the iOS Debug
configuration does not pin a signing identity, so the simulator SDK signs
ad-hoc and never consults a developer account. flutter run -d ios against a
simulator works without any of the edits above. Building for a physical iPhone
does need the maintainer's team and is not currently possible for outside
contributors.
For a release build without a certificate, no edits are needed. Use the no-sandbox script described under "macOS: building without a developer certificate" below.
If 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.sh
This script:
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:
submersion.appYou 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 --release
The 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.
Distro requirement: Submersion needs glibc 2.38 or newer, which means Ubuntu 24.04+, Debian 13+, Fedora 39+, Linux Mint 22+, Arch, or openSUSE Tumbleweed. Debian 12, Ubuntu 22.04, and RHEL 9 cannot run any current Submersion build. The packages install but the app will not start, and the tarball fails the same way, because three bundled libraries require GLIBC_2.38. Upgrading the distribution is the only path.
Where to get them: the
.deb,.rpmand tarball are on the Releases page with every stable release, and with every beta build at submersion-app/beta-builds.
Debian, Ubuntu, Mint, and derivatives
Download Submersion-v<version>-Linux-amd64.deb from
Releases, then:
sudo apt install ./Submersion-*-Linux-amd64.deb
Fedora and RHEL
Download Submersion-v<version>-Linux-x86_64.rpm from
Releases, then:
sudo dnf install ./Submersion-*-Linux-x86_64.rpm
openSUSE
The same .rpm, installed with zypper, which openSUSE ships instead of dnf:
sudo zypper install ./Submersion-*-Linux-x86_64.rpm
Both packages install a desktop entry, icons, and udev rules that let dive
computers connected by USB be reached without any group membership or
usermod step. Video compression is optional and needs ffmpeg, which the
packages recommend but do not require.
Everything else (Arch, NixOS, and anyone who prefers not to install packages)
Download Submersion-v<version>-Linux.tar.gz, unpack it, and run the included
installer:
tar xzf Submersion-*-Linux.tar.gz
./install.sh
install.sh checks for missing shared libraries and prints the exact command
to install them for your package manager, installs a desktop entry and icon
into ~/.local/share, and links the binary into ~/.local/bin. It also
prints the command to install the udev rules, which needs root.
./uninstall.sh reverses all of it and never touches your dive log data.
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-dev
Fedora:
sudo dnf install -y \
clang cmake ninja-build pkg-config \
gtk3-devel xz-devel libstdc++-devel \
sqlite-devel libsecret-devel
Arch Linux:
sudo pacman -S --needed \
clang cmake ninja pkg-config \
gtk3 xz sqlite libsecret
Then build:
flutter build linux --release
The 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
│ ├── insights/ # Analytics & records
│ └── ... # Additional features
└── shared/ # Reusable widgets
Tech Stack:
See the architecture guide for detailed documentation.
See the roadmap for what is built, what is in progress, and what is planned.
Contributions are welcome! Submersion is built by divers, for divers.
git clone --recurse-submodules <your-fork-url>git checkout -b feature/your-featurePlease 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:
Dive safe. Log everything. Own your data.