Case study / Personal data
FIT Webview
A browser-based explorer that turns Garmin activity files into usable maps and analytics without discarding the underlying record.

The problem
Activity summaries hide the interesting data.
Fitness platforms show a curated subset of what a device recorded. That is convenient until the question depends on an omitted message, a developer field, recorded heart-rate-zone configuration, or an activity type the platform interprets poorly—especially sailing.
Product approach
Useful overview, complete escape hatch.
The default experience starts with recent activities and maps. A selected activity puts route context first, then exposes synchronized charts, recorded zones, key metrics, and finally a searchable explorer containing every decoded message and field.
Data decisions
Unavailable stays unavailable.
- The parser retains every message produced by the current Garmin FIT SDK.
- Developer fields and unnamed private numeric IDs survive the conversion.
- Recorded heart-rate-zone durations and boundaries are shown exactly when the device provides them.
- Missing GPS or zone records receive explicit empty states rather than estimates.
- Cache schema versioning invalidates incomplete historical decodes after parser upgrades.
Experience
Explore from fleet scale to one raw field.
An all-activity density map shows long-term movement. Search and accessible filters narrow by sport, date, or year. Individual routes use speed gradients, start/finish markers, and optional context layers, while the data explorer makes proprietary detail inspectable instead of invisible.
Current state
A complete local analysis surface.
The decoder migration, activity cache, density map, activity view, exact zone display, raw explorer, responsive UI, and test coverage are complete. It runs as a static web application over a generated JSON cache.