Progress and photos
Scores, body metrics, habit streaks and records, the before and after photos with a weight goal, and the readings a member logs by hand.
For the Full Stack package
The progress page
/en/dashboard/progress reads everything from the member's own rows:
- Scores for strength, endurance, flexibility and mobility against four weeks ago, and their average as the total improvement.
- This week against last: sessions, minutes, calories and intensity (the average effort of the sets).
- Body metrics (weight, body fat, muscle) with their change over four weeks, the body composition over eight weeks, and the measurements from the first reading to the latest.
- Five habit streaks over 28 days: training, hydration at goal, 7 hours of sleep, protein at goal and 10,000 steps.
- Records (the farthest run, the longest session, the heaviest bench press set, the most steps in a day), milestones, badges and achievements.
Progress photos
/en/dashboard/progress/photoscompares two checkpoints side by side, with a picker for the before and the after.- A member adds a checkpoint with a photo, a date and an optional weight. The photo is uploaded first, so adding one needs a media bucket.
- The weight goal (a target in kilograms and a date) shows how far the member has come from the first photo, and the milestones list what changed since: weight lost, body fat down, chest up, waist down.
- A journal keeps the member's notes, up to 4,000 characters.
What a member logs by hand
Without a device, a member writes their own readings. Each one is for a date (never in the future) and replaces that day's reading if there is one.
| Where | What | Notes |
|---|---|---|
| Sleep | A night: bedtime and wake time, and optionally a score and the minutes of each stage | Missing stages are spread in the member's usual shares, and a missing score is worked out from the night's length. |
| Health | A day's vitals: resting heart rate, HRV, blood oxygen, breathing rate, temperature, blood pressure, weight | Only the values sent change. |
| Progress | A body reading: weight, body fat, muscle and five measurements | Values not sent carry forward from the last reading. |
A weight is written to both the health and the body readings, so the Health and Progress pages never disagree. Each reading can be deleted again.
The progress routes
| Method | Path | Permission | What it does |
|---|---|---|---|
GET | /api/fitness/progress | fitness.view | The progress page |
GET | /api/fitness/progress/photos?before&after | fitness.view | The photos page; before and after are dates or checkpoint keys |
POST | /api/fitness/progress/photos | fitness.edit | Adds a checkpoint ({ image, date, weightKg? }, image from the upload route) |
PATCH | /api/fitness/progress/photos/notes | fitness.edit | Saves the journal ({ notes }) |
PATCH | /api/fitness/progress/goal | fitness.edit | Sets the goal ({ targetKg, targetDate }) |
POST, DELETE | /api/fitness/progress/readings[/:date] | fitness.edit | Logs or deletes a body reading |
POST, DELETE | /api/fitness/sleep/nights[/:date] | fitness.edit | Logs or deletes a night |
POST, DELETE | /api/fitness/health/readings[/:date] | fitness.edit | Logs or deletes a day's vitals |