Minimal terminal-first training logger for bodyweight, Zone 2, Zone 5 / HIIT, and strength training.
The project is built for fast daily use. There is no backend, no account system, and no web UI. Everything runs in the terminal and is stored locally in a single JSON file.
- Rolling 7-day dashboard with weekly targets for Zone 2, Zone 5 / HIIT, strength, and a bodyweight snapshot
- Fast logging flow for:
- Bodyweight entries in kg
- Zone 2 sessions with fixed durations:
45,60,75minutes - Zone 5 / HIIT sessions with fixed protocols
- Strength sessions with a built-in training cycle and manual day selection for the session you are actually doing today
- Editable strength plan directly from the CLI
- Per-exercise progression tracking
- Session history, edit, and delete flows
- Local JSON storage with no cloud dependency
- Log bodyweight in kg directly from the main menu
- See the latest entry, change vs. the previous entry, and weekly entry count on the dashboard
- Edit and delete weight entries through the same session flow as training logs
- The app still suggests the next workout in the rotation
- You can manually choose which strength session you are actually doing today before logging starts
- Every exercise uses the same
2 sets x target repsstructure
Day 1: Overhead Triceps Extension, Cable Triceps Pressdown, Cable Curl, Incline Dumbbell Curl, Machine Shoulder Press, Lateral RaiseDay 2: Underhand Close-Grip Lat Pulldown, Straight-Arm Lat Pulldown, Joint-Friendly Shoulder Press, Cable Shoulder Raise, Lunges, Glute MachineDay 3: Chest Press, Deficit Push-Up, Y-Raise, Leg Press, Romanian DeadliftDay 4: Overhead Triceps Extension, Cable Triceps Pressdown, Single-Arm Cable Curl, Cable Curl, Machine Shoulder Press, Cross-Body Cable Y-RaiseDay 5: Weighted Underhand Pull-Up, Overhand Lat Pulldown, Joint-Friendly Shoulder Press, Machine Shoulder Press, Leg Extension, Glute MachineDay 6: Dips, Incline Dumbbell Press, Cable Shoulder Raise, Rear Delt Cable Fly, Squat Machine, Glute Machine
The current rep target is 6-12.
Each exercise progresses independently:
- If you complete the target reps, the next session moves up by one rep
- If you complete
12reps, the next session increases the weight by the exercise increment and resets to6reps - If you do not complete the target reps, the next session stays at the same weight and the same rep target
From the main menu, open Edit Strength Plan.
You can:
- Rename a workout
- Edit the workout focus
- Rename an exercise
- Change the starting weight
- Change the weight increment
- Add an exercise
- Remove an exercise
- Reset one workout to the default template
- Reset the full strength plan to the default template
All logs are stored locally in:
data/logbook.json
The data file includes:
- all logged Zone 2 sessions
- all logged Zone 5 / HIIT sessions
- all logged strength sessions
- all logged bodyweight entries
- the current editable program definition
The file is intentionally ignored by Git so personal training data does not get committed by default.
- Node.js
22+ - npm
npm install
npm run cliIf you want to start the app from anywhere in the terminal with just:
gymrun this once inside the project:
npm linkAfter that, gym will be available globally on your machine and will launch this project directly.
npm run cli
npm run buildThe CLI currently supports:
Log WeightLog Zone 2Log Zone 5 / HIITLog StrengthView Strength PlanEdit Strength PlanView Current WeekView HistoryEdit SessionDelete SessionExit
Zone 5 / HIIT currently offers:
4x46x210x1
src/cli.ts Interactive CLI entrypoint
src/data/program.ts Default program + active program state
src/lib/training.ts Progression, summaries, and history logic
src/lib/storage.ts JSON persistence
src/lib/terminal.ts Terminal rendering helpers
src/types.ts Shared TypeScript types
This is intentionally small:
- fast to open
- fast to log
- easy to inspect
- easy to modify
The goal is compliance and clarity, not feature bloat.
MIT