115 lines
3.4 KiB
Markdown
115 lines
3.4 KiB
Markdown
# Doris Barbell
|
|
|
|
Private-first exercise tracking app for John, with a clean path to add Manndra later.
|
|
|
|
## Purpose
|
|
|
|
Doris Barbell gives John one place to track:
|
|
|
|
- workout sessions
|
|
- structured exercise templates and routines
|
|
- sets with reps, weight, notes, rest, and RPE
|
|
- body weight and BMI over time
|
|
- broader body metrics in imperial units
|
|
- progress trends and simple PR tracking
|
|
|
|
## Runtime shape
|
|
|
|
- **Repo source:** `home/doris-barbell`
|
|
- **Expected live PD runtime:** `/mnt/docker-ssd/docker/compose/doris-barbell`
|
|
- **Expected first exposure:** private-first on PD, with public routing optional later
|
|
- **Published app port:** `8093`
|
|
|
|
Do not run production from an agent workspace.
|
|
|
|
## V1 defaults in flight
|
|
|
|
Unless John overrides them later, V1 is being built with these defaults:
|
|
|
|
- mobile-friendly but usable on desktop
|
|
- private-first deployment on PD
|
|
- John is the active user
|
|
- Manndra is stubbed as a second household member for future expansion
|
|
- JSON-backed state first for speed of delivery
|
|
- imperial measurement system only
|
|
- no progress photos
|
|
- no muscle-size tracking focus
|
|
- structured workout logging first, richer planning/reporting layered in after
|
|
|
|
## Current scaffold
|
|
|
|
The current scaffold already supports:
|
|
|
|
- seeded users for `john` and stub `manndra`
|
|
- seeded exercise templates and John's current five-day split:
|
|
- Monday: Chest
|
|
- Tuesday: Back
|
|
- Wednesday: Arms
|
|
- Thursday: Shoulders
|
|
- Friday: Legs
|
|
- profile updates
|
|
- weight logging with BMI calculation
|
|
- imperial body measurements for waist, hips, chest, and neck
|
|
- exercise template creation/listing
|
|
- routine creation/listing on top of John's imported base split
|
|
- structured workout logging with nested exercises and sets
|
|
- dedicated routine log sheets with dropdown exercise selection plus set-by-set reps and weight entry
|
|
- history endpoints for weight, measurements, and workouts
|
|
- exercise progression summaries with max weight and estimated 1RM per exercise
|
|
- mobile-friendly homepage with HTML forms for:
|
|
- weight logging
|
|
- body-measurement logging
|
|
- exercise template creation
|
|
- routine draft creation
|
|
- quick workout logging
|
|
- basic dashboard summary plus John-facing history snapshots
|
|
|
|
John is currently seeded at a default height assumption of `68.5` inches until he says otherwise.
|
|
His current imported split is stored with a default prescription of `3` sets and `10` reps for each listed movement, while working weights remain `TBD` until he fills them in.
|
|
|
|
## Current API surface
|
|
|
|
- `GET /api/health`
|
|
- `GET /api/dashboard/summary`
|
|
- `PUT /api/profile/{user_id}`
|
|
- `POST /api/profile/{user_id}/weight`
|
|
- `GET /api/history/{user_id}/weights`
|
|
- `POST /api/profile/{user_id}/measurements`
|
|
- `GET /api/history/{user_id}/measurements`
|
|
- `POST /api/exercises/templates`
|
|
- `GET /api/exercises/templates`
|
|
- `POST /api/routines`
|
|
- `GET /api/routines`
|
|
- `POST /api/workouts`
|
|
- `GET /api/history/{user_id}/workouts`
|
|
- `GET /api/progression/{user_id}/exercises`
|
|
- `POST /log/weight`
|
|
- `POST /log/measurements`
|
|
- `POST /templates`
|
|
- `POST /routines`
|
|
- `POST /workouts/quick-log`
|
|
|
|
## Local run
|
|
|
|
```bash
|
|
cd /home/fizzlepoof/repos/truenas-stacks/home/doris-barbell
|
|
python3 -m venv .venv
|
|
. .venv/bin/activate
|
|
pip install -r requirements.txt
|
|
uvicorn app.main:app --reload --port 8093
|
|
```
|
|
|
|
Or:
|
|
|
|
```bash
|
|
cd /home/fizzlepoof/repos/truenas-stacks/home/doris-barbell
|
|
bin/run-local.sh
|
|
```
|
|
|
|
## Verification targets
|
|
|
|
```bash
|
|
curl -fsS http://127.0.0.1:8093/api/health
|
|
curl -fsS http://127.0.0.1:8093/api/dashboard/summary
|
|
```
|