{
  "schema": "leumas.docs.page/1",
  "id": "adapter:domain/fitness-planner",
  "slug": "adapters/domain/fitness-planner",
  "kind": "capabilities",
  "bucket": "package",
  "title": "fitness-planner",
  "name": "Fitness Planner",
  "eyebrow": null,
  "chip": null,
  "summary": "Fitness, strength-training and nutrition-planning microservice: build a weekly workout split (full-body, upper/lower, push-pull-legs, bro-split) sized to days-per-week and a goal (strength...",
  "keywords": [
    "fitness-planner",
    "fitness",
    "full-body",
    "upper",
    "bro-split",
    "hypertrophy",
    "endurance",
    "grams"
  ],
  "audience": "both",
  "funnel": {
    "product": null,
    "cta": null
  },
  "body": "# fitness-planner\n\nA **training-programming & performance-nutrition microservice**. Deterministic exercise-science\nformulas: build a weekly workout split, generate a linear progression, compute macros and a calorie\ntarget, estimate a one-rep max, plan a deload, and generate warm-up sets. Programming tools *also*\nattach an optional plain-English LLM coaching cue and silently fall back offline; results are tagged\n`mode: 'heuristic' | 'llm'`. All numbers are pure math — a model never changes them.\n\n## Tools\n\n| Tool | Input | Output |\n|---|---|---|\n| `workoutSplit` | `{ daysPerWeek, goal }` | A proven split (full-body / upper-lower / PPL / bro-split) with per-day focus + goal-tuned set/rep scheme. **+optional cue.** |\n| `progression` | `{ lift:{name,startWeight,startReps?,sets?}, weeks, goal }` | A week-by-week linear load/rep ramp with built-in deload weeks. **+optional cue.** |\n| `macros` | `{ weight, goal, activity }` | Daily protein/carbs/fat grams (+ calories and % split) from bodyweight × goal × activity. |\n| `calorieTarget` | `{ goal, activity, options:{age,sex,weightKg,heightCm} }` | Daily calorie target: Mifflin-St Jeor BMR × activity factor + goal adjustment. |\n| `oneRepMax` | `{ weight, reps, options:{formula?} }` | Estimated 1RM (Epley/Brzycki/Lombardi + average) and a %-of-1RM training table. |\n| `deloadPlan` | `{ trainingMax, goal }` | A recovery-week prescription (~60% load, reduced volume). |\n| `warmupSets` | `{ weight, options:{steps?,units?} }` | A warm-up ramp from the empty bar up to the working weight. |\n\n`goal` ∈ strength / hypertrophy / endurance / fatLoss / maintain / gain / general.\n`activity` ∈ sedentary / light / moderate / active / veryActive. `options.units` ∈ `lb` (default) / `kg`.\n\n## Usage\n\n```js\nimport pack from './index.js';\n\npack.adapters.oneRepMax({ weight: 225, reps: 5 });\n// -> { estimates:{epley,brzycki,lombardi}, oneRepMax: ~253, percentages:{'90%':...} }\n\npack.adapters.macros({ weight: 180, goal: 'hypertrophy', activity: 'active' });\n// -> { calories, macros:{protein,carbs,fat}, percent:{...} }\n\npack.adapters.workoutSplit({ daysPerWeek: 5, goal: 'strength' });\n// -> { split:'Push / Pull / Legs + Upper/Lower', days:[...] }\n```\n\n## DRY boundaries\n\n- **Training + performance nutrition only.** General body metrics (BMI, standalone BMR, body-fat)\n  and biorhythm cycles live in other packs. The Mifflin-St Jeor BMR here is an *internal step* of the\n  `calorieTarget` formula, not a public body-metric tool.\n- Self-contained: the only cross-pack import is `../_shared/llm.js`.\n- Pure ESM, Node built-ins only, zero npm deps.\n",
  "source": {
    "path": "shared/engines/adapters/domain/fitness-planner/README.md",
    "blobSha": "",
    "commit": "",
    "committedAt": "",
    "provenance": "no-git",
    "bytes": 2798,
    "hash": "0be9a69403f58abc9c0837a84b66a0d9f3da8fcd"
  },
  "urls": {
    "html": "/p/adapters/domain/fitness-planner",
    "json": "/docs/adapters/domain/fitness-planner.json",
    "md": "/docs/adapters/domain/fitness-planner.md"
  },
  "links": {
    "composes": [],
    "usedBy": [],
    "product": [],
    "howTo": [],
    "skills": []
  }
}
