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- On a computer go to strava.com → profile picture (top right) → Settings → My Account.
- Under Download or Delete Your Account click Get Started, then step 2 Request Your Archive.
- Strava emails a download link (minutes to a few hours). Download the zip and unzip it.
- The unzipped folder has
activities.csvat the top level. That is the main file the coach reads; if it is missing, the raw workout files in theactivities/folder are used instead.
2
Export from Apple Health
optional · HRV, resting HR, sleep- iPhone → Health app → profile picture (top right) → Export All Health Data → Export.
- Wait 1–5 minutes; it produces
export.zip(often 500 MB+). - AirDrop / iCloud / cable it to the PC and unzip. Inside is a folder
apple_health_exportcontainingexport.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 locationsIron 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_exportorapple_health_export. Add a date asYYYY-MM-DDso folders sort in order. Dropping the unzippedapple_health_exportfolder in as-is also works. - Which one gets used: whichever
activities.csv/export.xmlwas 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.dband each export is de-duplicated against it — nothing is lost. - Easiest habit: overwrite
data/stravaanddata/apple_healtheach week and never name anything.
4
Run the pipeline
one commandOpen 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.py | everything except the push — review, then git push |
python sunday.py --push --feel tired | no Apple Health export; ask for a lighter week |
python sunday.py --dry-run | just print the plan, change nothing |
python sunday.py --no-calendar | skip 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.