Connecting Sources
Athlete Vault supports four ways to get your training data in. You can use any combination.
Strava
Strava API requires a paid subscription. As of 2025, Strava restricts third-party API access to Premium subscribers (~$80/year). If you don't have a Premium subscription, use the File Upload or Watched Folder sources instead — they work with any GPS device and don't require Strava at all.
Migrating existing Strava data: go to Strava → Settings → My Account → Download or Delete Your Data. The bulk export contains all your activities as FIT/GPX files. Drop them on the Upload page and they'll be imported with full GPS, HR, and metadata.
Once connected, Strava syncs are incremental — only new activities are fetched after the first full import.
1. Create a Strava API app
- Go to strava.com/settings/api
- Create an application with any name (e.g. "Athlete Vault")
- Set Authorization Callback Domain to
localhost - Copy the Client ID and Client Secret
2. Enter credentials
Either:
- Open Settings in the app → paste Client ID and Client Secret → Save, or
- Add to
.envin the project root:
3. Connect and sync
- Open the Sources page
- Click Connect Strava — Strava opens in your browser for authorisation
- After authorising, you land back on Sources with the connection active
- Click Sync now
The first sync imports your full activity history (a few minutes for large accounts). Subsequent syncs are fast.
Nike Run Club
NRC requires a bearer token extracted from your browser.
Get your bearer token
- Open nikeplus.nike.com and log in
- Open Developer Tools → Network tab
- Reload the page; find any
api.nike.comrequest - In the request headers, copy the value after
Authorization: Bearer
Connect
- Open the Sources page
- Paste your token into the NRC field → Connect
- Click Sync now
NRC tokens expire. If sync fails with an authentication error, repeat the steps above to get a fresh token.
File Upload (FIT / GPX / TCX)
Upload individual workout files from any device.
Supported formats
| Format | Notes |
|---|---|
.fit |
Garmin / Wahoo native format; richest data (HR, cadence, GPS, power) |
.gpx |
Universal GPS format; HR and cadence supported via standard extensions |
.tcx |
Garmin Training Center XML; laps, HR, cadence |
How to upload
- Open the Upload page
- Drag files onto the drop zone, or click to browse
- Multiple files upload in sequence
- Each file shows its result: ✓ imported, duplicate (already exists), or error
Uploading the same file twice is safe — deduplication is by SHA-256 of file content.
Getting files from your device
- Garmin: Garmin Express → copies
.fitfiles to your computer - Apple Watch: HealthExport exports workouts as GPX
- Wahoo: Wahoo app → activity → share → save
.fitfile - Strava: Settings → My Account → Download or Delete Your Data (bulk GPX)
Watched Folder
The watched folder source monitors a local directory and imports any new .fit, .gpx, or .tcx file that appears there — automatically, without any manual upload step.
This is the most seamless way to import from a Garmin watch: plug in the USB cable, let Garmin Express sync, and Athlete Vault picks up the new files in seconds.
Set up a watched folder
- Open the Sources page
- Scroll to Add a source → Watch a local folder
- Enter the full path to the directory (e.g.
/Users/you/Downloads/Garmin) - Click Watch folder
The folder is scanned immediately on connection. After that, new files are detected via filesystem events (with a 5-minute polling fallback for network drives).
File log
Each watched-folder source card has an expandable file log showing the last 20 processed files with their status:
| Status | Meaning |
|---|---|
imported |
New activity created |
duplicate |
File already exists (same SHA-256); skipped |
error |
Parse or save error; message shown |
Manual scan
Click Scan now on the source card to trigger an immediate full scan of the folder. Useful after copying a batch of files.
Removing a watched folder
Click the trash icon on the source card. This stops the watcher and removes the source connection. Previously imported activities are not affected.
Tips
- You can add multiple folders — one per device, for example.
- The folder must exist on the machine where Athlete Vault is running. For Docker deployments, mount the folder into the container via
docker-compose.yml(see Setup). - NFS / SMB network mounts work; polling ensures files are caught even when filesystem events don't propagate.