After recovering from a running injury, I set a new goal: to complete the Winter Green Man Ultra (https://www.greenmanultra.co.uk/the-winter-green-man-ultra/) in March 2025. Combining my passion for running and data science, I've embarked on a project to build a personalized training dashboard using data from my Garmin watch.
This project aims to:
- Optimize Training: Provide a customized overview of my running data to enhance my training regimen.
- Demonstrate Data Skills: Apply and showcase my data analysis and visualization expertise through a real-world application.
- Create a Versatile Tool: Develop a dashboard that could potentially benefit other Garmin users seeking personalized data insights.
- More to come...
- Introduction
- Features
- Technologies Used
- Installation
- Usage
- Project Progress
- Contributing
- License
- Contact
- Automated Data Retrieval: Batch scraping of Garmin activity data using an extended functionality of the
garmiconnect
package. - Data Processing and Storage: Parsing and storing data from various file formats (.FIT, .TCX, .GPX, .CSV).
- Interactive Dashboard: Built with Dash and Plotly, featuring:
- Weekly Mileage Tracker: Visualizes weekly running mileage against a 10% incremental target leading up to race day.
- Countdown Timer: Displays the time remaining until the Winter Green Man Ultra 2025.
- Route Mapping: Visualizes running routes using GeoPandas and GPX data.
- Scalable Architecture: Plans to implement AWS Lambda functions for automated data updates.
- Programming Languages: Python
- Data Processing: Pandas, GeoPandas
- Data Visualization: Plotly, Dash
- Web Framework: Dash (by Plotly)
- Data Retrieval:
garminconnect
package - Cloud Services (Planned): AWS Lambda
- File Formats: .FIT, .TCX, .GPX, .CSV
To set up the project locally:
-
Clone the Repository:
git clone https://github.com/yourusername/winter-gmu45-dashboard.git
- Brainstormed End-Product:
- Envisioned a deployed web app featuring a dashboard with my data, updating daily or semi-daily with the latest Garmin data.
- Utilized
garminexport
Package:- Found and extended the existing GitHub package
garminexport
to allow batch scraping.
- Found and extended the existing GitHub package
- Data Retrieval:
- Successfully pulled all of my activity data from Garmin, obtaining
.csv
,.tcx
,.gpx
, and.zip
files.
- Successfully pulled all of my activity data from Garmin, obtaining
- File Content Analysis:
- Explored the data within the files to determine relevance for the dashboard.
- Route Plotting:
- Experimented with plotting GPX files using GeoPandas for route visualization.
- Template Creation:
- Developed a template Dash application to work towards the end product.
- Weekly Mileage Tracker:
- Generated the first useful graph—a weekly mileage tracker versus a 10% increase limit until the race date—using Pandas and Plotly Go.
- Dashboard Integration:
- Placed the graph on the dashboard along with a countdown timer until the race.
.FIT
Files:- Provide the most detailed and comprehensive data, including advanced fitness metrics.
- Useful for adding heart rate, cadence, power, and other advanced metrics to the dashboard.
.TCX
Files:- Similar data to
.FIT
files but in a more readable XML format. - Less efficient for large datasets but easier to inspect manually.
- Similar data to
.GPX
Files:- Focus on GPS location and route data.
- Useful for visualizing routes but lack detailed fitness metrics.
.CSV
Files:- Good for summary statistics.
- Lack detailed data such as heart rate or cadence.
- AWS Lambda Functions:
- Learn how to use AWS Lambda functions to automate data retrieval through the Garmin API.
- Visual Improvements:
- Make the dashboard more visually appealing and improve the user interface.
- Additional Features:
- Add more features to the dashboard, such as:
- Heart rate zone analysis.
- Elevation gain over time.
- Interactive route maps.
- Add more features to the dashboard, such as:
- Customization for Other Users:
- Once the dashboard is polished, useful, and has robust data retrieval, consider making it customizable for other Garmin users.
- Predictive Analytics:
- Incorporate predictive analytics to forecast performance.
- Metric Correlation Analysis:
- Analyze correlations between different training metrics.