How to update

There is no upload on this site — it is rebuilt from a data file your PC generates. The weekly routine is export → drop the folder in → run one command. About 5 minutes, ideally Sunday.

1

Export from Strava

required
  1. On a computer go to strava.com → profile picture (top right) → Settings → My Account.
  2. Under Download or Delete Your Account click Get Started, then step 2 Request Your Archive.
  3. Strava emails a download link (minutes to a few hours). Download the zip and unzip it.
  4. The unzipped folder has activities.csv at the top level. That is the main file the coach reads; if it is missing, the raw workout files in the activities/ folder are used instead.
2

Export from Apple Health

optional · HRV, resting HR, sleep
  1. iPhone → Health app → profile picture (top right) → Export All Health Data → Export.
  2. Wait 1–5 minutes; it produces export.zip (often 500 MB+).
  3. AirDrop / iCloud / cable it to the PC and unzip. Inside is a folder apple_health_export containing export.xml.

Skipping this week? Run the pipeline with --feel good, --feel normal or --feel tired and the coach uses your self-report instead of the recovery metrics.

3

Drop the folders into the project

any of these locations
Iron Coach/
  data/strava/activities.csv                   ← Strava (what you have now)
  data/strava/activities/                      ← or just the export's raw files folder
  strava_export_2026-09-28/activities.csv      ← or a dated folder at the top level
  data/apple_health/export.xml                 ← Apple Health
  apple_health_export_2026-09-28/export.xml    ← or a dated folder at the top level
  • Naming: the folder only has to start with strava_export or apple_health_export. Add a date as YYYY-MM-DD so folders sort in order. Dropping the unzipped apple_health_export folder in as-is also works.
  • Which one gets used: whichever activities.csv / export.xml was modified most recently, across all those spots. A fresh export always wins. The pipeline prints the path it picked.
  • Old folders: safe to delete any time. Everything already imported lives in data/normalized.db and each export is de-duplicated against it — nothing is lost.
  • Easiest habit: overwrite data/strava and data/apple_health each week and never name anything.
4

Run the pipeline

one command

Open a terminal in the Iron Coach folder (right-click the folder → Open in Terminal) and run:

python sunday.py --push

That parses the exports, updates the database, generates next week's plan, writes the Google Calendar events, regenerates this site's data, commits and pushes. Vercel rebuilds the website in a minute or two.

python sunday.pyeverything except the push — review, then git push
python sunday.py --push --feel tiredno Apple Health export; ask for a lighter week
python sunday.py --dry-runjust print the plan, change nothing
python sunday.py --no-calendarskip Google Calendar

Sunday checklist

  • Strava archive requested and unzipped
  • (optional) Apple Health export unzipped
  • Folders dropped into Iron Coach/ (step 3)
  • python sunday.py --push
  • Output shows “reading …” with today’s export and N new activities > 0
  • This site shows the new week (hard-refresh if it looks stale)

Troubleshooting

0 new activities
Neither activities.csv nor the activities/ folder of the new export is in the project, the export is older than what's already in the database, or an old folder was picked. Check the “reading …” line and delete stale export folders.
A session shows as missed
It needs the same sport in the same Monday–Sunday week and at least 60% of the planned minutes. Doing it on a different day still counts.
No HRV line in the summary
Apple Health export missing or older than 7 days. Use --feel.
Push rejected (email privacy)
Run once: git config user.email "sebastianpaccetta-prog@users.noreply.github.com"
Site didn't update
git status should say “up to date with origin/main”; otherwise git push. Then hard-refresh.