3.5 KiB
3.5 KiB
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
johnand stubmanndra - 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
- live workout pages that let John start a session and save one exercise at a time mid-workout
- 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/healthGET /api/dashboard/summaryPUT /api/profile/{user_id}POST /api/profile/{user_id}/weightGET /api/history/{user_id}/weightsPOST /api/profile/{user_id}/measurementsGET /api/history/{user_id}/measurementsPOST /api/exercises/templatesGET /api/exercises/templatesPOST /api/routinesGET /api/routinesPOST /api/workoutsGET /api/history/{user_id}/workoutsGET /api/progression/{user_id}/exercisesPOST /log/weightPOST /log/measurementsPOST /templatesPOST /routinesPOST /workouts/quick-log
Local run
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:
cd /home/fizzlepoof/repos/truenas-stacks/home/doris-barbell
bin/run-local.sh
Verification targets
curl -fsS http://127.0.0.1:8093/api/health
curl -fsS http://127.0.0.1:8093/api/dashboard/summary