
Desktop
BreakMate
- Flutter
- Dart
- Native Channels
- ObjectBox
- GitHub Actions
Project overview
A desktop app that nags you to stand up, stretch and look at something that isn’t a screen. Adaptive break reminders, focus tools and a customizable companion for macOS, Windows and Linux.
what went into it
- 01
Adaptive break scheduling, focus presets and full-screen break overlays.
- 02
Native meeting, presentation and idle detection, plus calendar-aware scheduling.
- 03
Multiple Flutter engines, native platform bridges and local-first analytics.
- 04
Automated desktop release workflows and macOS updates through Sparkle.
build log
How I built it.
The problem
Break reminders that interrupt a meeting or a presentation get uninstalled fast. BreakMate needed to know when to stay quiet, on three desktop platforms, from one Flutter codebase.
Architecture
- Native bridges
- Meeting, presentation and idle detection are platform-specific, so each OS has its own native implementation behind one Dart interface.
- Multiple engines
- The break overlay runs in its own Flutter engine, separate from the settings window, so it can go full screen without dragging the main app along.
- Local-first
- Break history and analytics are stored locally in ObjectBox. Nothing leaves the machine.
- Releases
- GitHub Actions builds each desktop target; macOS updates go through Sparkle.
What I’d change
- Share less state between engines; a small message protocol would be easier to test than shared storage.
- Write the native detectors first and test them on real calls before building the scheduler around them.





