All projects

Project · Building

TrailPulse

A private fitness tracker for hikers. It shows whether I'm getting fitter, using my own Samsung watch data, with no subscription, no ads and nothing stored in the cloud.

  • Kotlin
  • Samsung Health Data SDK
  • Python
  • FastAPI
  • SQLite
  • ECharts
  • MCP
  • Tailscale

TrailPulse pulls my hikes, walks and heart rate from my Samsung watch to a computer at home, works out whether the same climbs are getting easier, and suggests what to do next week. I can also ask Claude about it in plain English.

Why it’s different

  • No subscription or monthly cost. It runs on a computer I already own, and the private network it uses (Tailscale) is free for personal use. There’s no account to sign up for and nothing to renew.
  • My data stays mine. Every reading is stored on my own computer, never in a cloud service. The phone sends data only to my home computer over a private, encrypted connection, and the server can’t be reached from the internet.
  • Claude sees only what it needs. When I ask a question, Claude reads my workout and heart rate summaries through a read-only connection. It never gets my GPS tracks, and nothing is shared until I ask.
  • No ads, no tracking. The dashboard loads nothing from outside: no ads, no analytics, no trackers, not even web fonts or online maps.

What it does

  • Syncs new workouts from the phone automatically.
  • Splits each hike into the climb, the rest at the top and the descent.
  • Recognizes the trail and compares every visit, so I can see whether the same climb is getting faster or easier on my heart.
  • Works out a daily resting heart rate, plus training load and recovery.
  • Builds a suggested week from what I’ve already done, with recovery first.

The story of why I built it, and what I learned, is in the posts below.

Writing about TrailPulse