A simple and customizable breath-hold timer app for freediving and breathwork, built with Flutter.
- Customizable inhale, hold, exhale, and rest intervals
- Minimalist, mobile-friendly interface
- For both beginners and experienced users
- Works on Android, iOS, and web
-
Clone the repository.
-
Run the app using Flutter:
flutter run
-
Set your desired intervals and press "Start Timer" to begin your session.
Based on exercises by Alexey Molchanov: Watch the video
Full text instructions in multiple languages can be found in the docs folder.
-
Prerequisites:
- Flutter SDK installed.
- A configured IDE (like VS Code) or command line.
-
Clone the Repository:
git clone https://github.com/konyshevgmbh/bearth_timer.git cd bearth_timer -
Get Dependencies:
flutter pub get
-
Run the Game:
-
Mobile (Android/iOS):
flutter run
Ensure you grant microphone permissions when prompted by the app.
-
Web:
flutter run -d chrome --web-renderer html
Your browser will likely ask for microphone permission for the site. The
htmlrenderer is often better for microphone access consistency on the web withflutter_recorder. -
Desktop (Windows/macOS/Linux):
flutter run -d windows # or -d macos / -d linuxEnsure microphone permissions are granted at the OS level.
Linux Audio Dependencies: For audio playback on Linux, you may need to install additional packages:
sudo apt-get install libasound2-dev pulseaudio
-
-
Updating App Icons:
dart run flutter_launcher_icons
Fix circular Android icons using Icon Kitchen.
-
Translations: dart run slang
See slang documentation for details. -
UI Mockups: UI Mockups created with https://excalidraw.com/

-
Concept Local First: https://www.inkandswitch.com/essay/local-first/
TODO implement CRDT, but for now use simple solution with createdAt, updatedAt and deletedAt timestamp.
Open issues or pull requests for suggestions or improvements.
MIT License
https://play.google.com/store/apps/details?id=com.konyshevgmbh.bearth_timer
https://www.rustore.ru/catalog/app/com.konyshevgmbh.bearth_timer
