Strava Activity Dashboard

Automated daily sync of running, cycling, hiking & more via GitHub Actions

Python Chart.js JavaScript Strava API GitHub Actions Data Viz
Back to Projects

Project Overview

This project builds a fully automated data pipeline that connects to the Strava API using OAuth 2.0, fetches all of my activity data (runs, rides, hikes, and more), processes it with Python, and visualizes the results with interactive Chart.js charts. A GitHub Actions cron job runs daily to keep the data fresh, committing updated JSON directly to the repository so GitHub Pages serves the latest stats automatically — no backend server required.

Objectives

Key Results

Lifetime Stats

Loading...

Best Activity

Loading activity data...

Activity Type Breakdown

Activities by Type

Type Distribution

Distance Over Time

Monthly Distance (Miles)

Elevation & Activity Patterns

Monthly Elevation Gain (Feet)

Activity Type by Month

Weekly & Pace Patterns

Day of Week Distribution

Running Pace Trend

Methodology

Skills Demonstrated

Technologies Used

Python JavaScript Chart.js Strava API GitHub Actions Data Viz

How It Works

  1. A GitHub Actions cron job triggers daily at 6 AM UTC (or on manual dispatch).
  2. The Python script refreshes the Strava OAuth access token using the stored refresh token.
  3. The script paginates through all activities from the Strava API, processing each record.
  4. Raw data is enriched with unit conversions, derived fields (pace, display times), and aggregate statistics.
  5. The processed JSON is written to data/strava_activities.json and committed to the repository.
  6. GitHub Pages automatically serves the updated file, and the dashboard reflects the latest data.

GitHub Repository

View on GitHub