Dashboard for analyzing running shoe usage and distance using Streamlit and Strava API.
Demo: https://shoedash.streamlit.app/
- Overview Stats: number of shoes, activities, total and average mileage
- Weekly Mileage Chart: shoes used per week
- Shoe Cards: shoe total and average, mileage, activities, distance cohorts
- Charts: YOY culmulative distance, YOY weekly/monthly distance, distance cohorts
- Filter data by start/end year and shoes
- Python 3.12
- Streamlit
- Pandas
-
Create .env from .env.example
-
Setup demo endpoints using nPoint for athlete, activities, and gear data. Update .env with
DEMO_PROFILE_URL,DEMO_ACTIVITY_URL,DEMO_GEAR_URLDemo Athlete:
{ "id": 1, "username": "foobar", "firstname": "Foo", "lastname": "Bar", "shoes": [ { "id": "shoe1", "name": "Shoe Name", "distance": 1000000, "converted_distance": 621.0 } ] }Demo Activities:
[ { "id": 1, "name": "Activity 1", "sport_type": "Run", "start_date_local": "2025-05-10T10:11:22Z", "distance": 5000, "gear_id": "shoe1", }, { "id": 2, "name": "Activity 2", "sport_type": "Run", "start_date_local": "2025-05-11T08:17:11Z", "distance": 5000, "gear_id": "shoe2", } ]Demo Gear:
[ { "id": "shoe2", "name": "Retired Shoe", "retired": true, "distance": 684361, "converted_distance": 425.2, } ] -
Create Strava application and update .env with
STRAVA_CLIENT_ID,STRAVA_CLIENT_SECRET -
Install dependencies
pip install -r requirements.txt -
Run streamlit
streamlit run main.py -
View app at
http://localhost:8501