John's YEAR IN MOTION

RUNNING WRAPPED

Loading...

John Covered

--

kilometres

Loading...

Time on John's Feet

--

hours running

Loading...

John's Running Stats

🏃
--
Total Runs
📅
--
Avg km/Run
📏
--
Longest run
🩳
--
Shortest run
--
Avg Pace /km
👟
--
Total Steps
⛰️
--
Metres Climbed
🔥
--
Calories Burned

John's Personal Bests🏆

PBs this year

John's Heart Didn't Skip A Beat

❤️

--

Total Heartbeats

--

Avg BPM

--

Peak Avg BPM

--

Lowest Avg BPM

Loading heart stats...

John's Pace Zones 🎯

Based on 5K best effort pace

John's Heart Rate Zones ❤️

❤️
--
LTHR (bpm)

Km By Month

Loading monthly data...

When John Runs 🌅

Loading hourly data...

John's Running Weather ⛅

The conditions John ran in most often

🌡️ Temperature
🌤️ Conditions
💧 Humidity

John's Running Routes 🗺️

-- Routes Mapped
-- GPS Points

John's Running Calendar 📅

Every run, every day

Mon Wed Fri
Less More
-- Day Streak
-- Favourite Day
-- Weekend Runs
-- Weekday Runs

John's Top Shoes 👟

What John's Running Equals 🤯

🍔
--
Big Macs Burned
I'm loving it..
🍺
--
XXXX Golds Earned
Queenslander!
🌏
--
Around Earth
Of the circumference
🏔️
--
Mount Everest Climbed
In elevation gain
💡
--
Hours of Light Bulb
60W bulb powered
🦘
--
Kangaroo Hops
At 9m per hop

Time Spent Flying 🚀

🏃
--
Total Airtime
--
Avg per Step
--
Avg Cadence
--
Est. Ground Contact

That's like -- worth of hang time!

Can John Outrun...? 🏃💨

--
John's 5K PB Pace

The Sweat Equity 💦

💧 💧 💧 💧 💧
--
LITRES OF SWEAT
🥛
--
2L Milk Jugs
🛁
--
Bathtubs
🐠
--
Fish Tanks (40L)

* Calculating based on your running conditions...

John's Power Output ⚡

Total Mechanical Energy

--

MegaJoules

--
kWh Generated
--
Avg Running Power
--
Phone Charges
--
Litres of Petrol Equivalent

John's Running Soundtrack 🎵

John's Best Run Titles 🏆

THAT'S A WRAP! JOHN IS...

🏃

Loading...

Analyzing your runs...

Your running persona is being calculated based on your year of data...

Spirit Animal 🐺 Loading...

How Running Wrapped Works

Data Flow

1

🏃 Strava Records Activities

Every run is tracked with GPS, heart rate, pace, and elevation data via my Garmin watch synced to Strava.

2

🎵 Last.fm Scrobbles Music

Spotify listening history is scrobbled to Last.fm, capturing every track played during runs.

3

🌤️ Open-Meteo Weather Data

Historical weather conditions (temperature, humidity) are fetched for each run's location and time.

4

⚙️ Azure Data Factory ETL

A scheduled pipeline extracts data from all APIs, matches music to runs by timestamp, and calculates aggregated statistics.

5

🤖 ChatGPT Analyses Runs

A daily Azure Function sends run titles and year stats to ChatGPT to generate fun awards and a unique running persona.

6

⚡ Azure Function Exports JSON

A scheduled Azure Function queries the data warehouse daily and exports the wrapped stats as JSON to Blob Storage.

7

🌐 Frontend Renders Experience

This page fetches the JSON from Blob Storage and dynamically populates all 22 slides with my year in running.

Tech Stack

Strava API Spotify Last.fm Open-Meteo API Azure Data Factory Azure SQL Azure Functions Azure Blob Storage OpenAI ChatGPT Vanilla JS CSS Animations