Overview
HydroSafe Garmin Watch App is the wearable half of the HydroSafe project — a way to bring hazard awareness onto the wrist of a whitewater kayaker while they’re actually on the water, no phone required mid-run. Before a session, river section and hazard data is pushed to the watch; during the session the watch tracks the run natively and warns the paddler as they approach known hazards, using sound and vibration so they don’t need to look down. After the session, activity data — GPS track, duration, gauge level, and any hazards logged live — syncs back to feed HydroSafe’s paddle log and community hazard database.
The first version targets the Garmin Instinct on purpose: a rugged, button-first device built for extreme sports, but also one of the hardest Garmin models to design for, with a 2-color display and an intrusive circular overlay in one corner. Designing for the hardest case first meant every other Garmin device the app might later support should be easier to fit.
Key features
- Starts a native Garmin “whitewater” activity in the background for the session, tracking duration, distance, heart rate, and standard activity metrics alongside HydroSafe’s own data
- Live distance-to-next-hazard tracking, with a configurable early warning (e.g. first alert at 200m out)
- Escalating alert as the hazard gets close — vibration and sound, with a distinct sound per hazard type so the paddler can recognize what’s coming up without looking at the screen
- In-session hazard logging: pressing ‘UP’ opens a short on-device form to record hazard type and severity, automatically geotagged, so the paddler can log a hazard and keep going without breaking focus
- Post-session sync lets the paddler enrich logged hazards with notes and photos via the mobile app — the enriched hazard is then included in the next push to any watch heading down that section
- One-way, on-demand sync model: section and hazard data is pushed to the watch before a session, and activity/hazard data is pulled back after — no live connection needed mid-run
- Built and tested first for the Garmin Instinct: a 2-color, low-resolution display, navigated entirely by physical buttons
Challenges
- Memory constraints — the Instinct has only 128kb of memory, which made it genuinely difficult to save data like hazards or session details mid-run without risking a crash
- Screen layout — a lot of trial and error to fit all the relevant stats and data cleanly on a small, 2-color display without text getting cut off at the edges or overlapping other elements
- Designing “eyes-free” alerts — getting hazard warnings (sound + vibration, per hazard type) distinct enough that a paddler could recognize the hazard type without looking at the watch mid-rapid
What I learned
- Monkey C and the Garmin Connect IQ SDK, including working within very tight memory budgets on constrained wearable hardware
- Designing a push-before/pull-after data flow for a device with no live network connection during use
- UI/UX design under real hardware constraints — monochrome, low-res, button-only navigation
- Hooking into Garmin’s native activity framework to layer custom, domain-specific data on top of a standard fitness activity
- The value of designing for the hardest supported device first, to surface worst-case constraints early rather than late
Currently sideloaded only — not yet published to the Connect IQ store. Still working on making navigation and the overall UI clearer for new users.