r/kustom • u/duracell013 • 9h ago
KWGT [KWGT] Built a free Android widget to show Garmin Training data
Hey everyone,
I wanted a clean Android home screen widget that shows my Acute Training Load relative to my optimal chronic target range, Training Readiness score, and rolling 7-day running mileage—without paying for third-party hosting or running heavy background apps on my phone.
Since I couldn't find any off-the-shelf solutions, I put together an open-source, serverless pipeline using Python, GitHub Actions, and KWGT.
How It Works
- Serverless Backend: A Python script runs on GitHub Actions (100% free), authenticates using secure session tokens, and pulls metrics directly from Garmin Connect.
- GitHub Gist Storage: Metrics are saved into a raw
garmin_data.jsonfile hosted on GitHub Gists. - KWGT Front End: Your Android widget pulls from the Gist via HTTPS and dynamically updates your visual target load bars, readiness scores, and indicators.
- Pre-Sync Guard: If the workflow runs early in the morning before your watch completes its morning sync, it automatically falls back to yesterday's target metrics so your home screen never renders zeroes or
null.
Key Metrics Displayed
- Acute Training Load: Dynamic target tunnel showing your current load against min/max chronic boundaries.
- Training Status & Readiness: Score, recovery time (in rounded hours), and qualitative feedback (e.g., Rested and ready).
- 7-Day Cumulative Mileage: Rolling total running distance in km.
- VO2 Max: Precise value readout.
Code & Setup
Everything is open-source, including step-by-step setup guides, formulas, and screenshots of the widget in action:
GitHub Repository: https://github.com/duracell013/training_data/
⚠️ Some bugs could be present and the REEDME was automatically generated for the most part.