A comprehensive terminal-based workout tracking application for Mark Rippetoe's Starting Strength program
Project description
StrengthTracker
StrengthTracker is a comprehensive, terminal-based workout tracking application for Mark Rippetoe's Starting Strength program. It tracks linear progression, manages deloads, calculates warmup sets, and maintains detailed workout history.
Features
- Linear Progression Tracking: Automatically increases weights after successful workouts
- Smart Deload Management: Handles failed sets with configurable deload logic
- Automatic Warmup Calculations: Generates appropriate warmup sets for main lifts
- Workout Scheduling: Determines which workout is due based on the current week
- Progress Analytics: View workout history and current weights with detailed breakdowns
- Local Data Storage: All data stored in human-readable YAML format
- Cross-platform: Works on Windows, Mac, and Linux
- Minimal Dependencies: Just Python and a few lightweight packages
Installation
From PyPI (Recommended)
pip install strength-tracker
From AUR (Arch User Repository)
# Using yay (recommended)
yay -S strength-tracker
# Using paru
paru -S strength-tracker
From Source
# Clone the repository
git clone https://github.com/sipistab/strength-tracker.git
cd strength-tracker
# Install dependencies
pip install -r requirements.txt
# Install as a module
pip install -e .
Usage
Run StrengthTracker:
python -m strength-tracker
The application will check for existing workout data in your home directory (~/.strength_tracker/). If no previous data exists, it will initialize with default Starting Strength starting weights.
Project Structure
StrengthTracker/
├── strength_tracker/ # Software code
│ ├── __init__.py
│ └── strength_tracker.py # Main application
├── config.yaml # User configuration
├── requirements.txt # Python dependencies
├── setup.py # Package setup
├── pyproject.toml # Package configuration
├── PKGBUILD # AUR package build script
├── scripts/ # Helper scripts
│ └── update-aur.sh # AUR update script
└── ~/.strength_tracker/ # User data directory
├── workouts/ # Workout history
├── current_weights.yaml # Current working weights
└── failure_streaks.yaml # Failure tracking
Workout Program
Starting Strength follows a 3-day per week schedule:
- Tuesday: Week A or B workout
- Thursday: Week A or B workout
- Sunday: Week A or B workout
Week A Workout
- Squat (3×5) - +2.5 kg per workout
- Bench Press (3×5) - +2.5 kg per workout
- Deadlift (1×5) - +5 kg per workout
Week B Workout
- Squat (3×5) - +2.5 kg per workout
- Overhead Press (3×5) - +2.5 kg per workout
- Power Clean (5×3) - +2.5 kg per workout
Bonus Exercises (Every Week)
- Atlas Curl (2×10) - Bodyweight
- Neck Curl (3×15) - 5 kg starting weight
- Hanging Leg Raise (3×10) - Bodyweight
Configuration
The program uses a comprehensive YAML configuration system. You can customize your workout program by editing config.yaml:
# Program Settings
program:
name: "Starting Strength Program"
schedule:
days: [2, 4, 7] # Tuesday, Thursday, Sunday
# Exercise Definitions
exercises:
squat:
starting_weight: 60
progression: 2.5
sets: 3
reps: 5
# Workout Templates
workouts:
week_A:
- squat
- bench_press
- deadlift
week_B:
- squat
- overhead_press
- power_clean
# Bonus Exercises (repeat every week regardless of A/B cycle)
bonus_exercises:
- atlas_curl
- neck_curl
- hanging_leg_raise
# Deload Settings
deload:
stalling_attempts: 3
reduce_percent: 10
Analytics
The software tracks and displays:
- Current Weights: Per exercise with progress indicators
- Workout History: Complete session logs with dates and status
- Progress Tracking: Weight increases and deloads over time
- Failure Streaks: Consecutive failed sets per exercise
- Session Details: Sets, reps, weights, and completion status
Context
This application implements Mark Rippetoe's Starting Strength program, designed for beginners to build strength quickly through consistent, progressive training with proper form. The program focuses on compound movements and linear progression, gradually increasing stress on the body until you can't, then managing deloads intelligently.
Dependencies
click(>=8.0.0) - Command line interfacerich(>=10.0.0) - Beautiful terminal outputpyyaml(>=6.0.0) - YAML file handling
Development
This is a standalone application designed to be:
- Self-contained: All functionality in one file
- Portable: Can be moved to any directory
- Simple: Easy to understand and modify
- Focused: Does one thing well - Starting Strength tracking
License
Free to use, modify, and distribute as you see fit.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file strength_tracker-1.0.0.tar.gz.
File metadata
- Download URL: strength_tracker-1.0.0.tar.gz
- Upload date:
- Size: 15.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9de1cc27af6da5bf9e542b78a36d54bda72be98754192c34c494d56562976792
|
|
| MD5 |
7aef1b728c38ca738731209d7149a404
|
|
| BLAKE2b-256 |
7d543ebc6539bce9df95fc6308e3e30f789082cf42ad37bcdb5654a97d27601a
|
File details
Details for the file strength_tracker-1.0.0-py3-none-any.whl.
File metadata
- Download URL: strength_tracker-1.0.0-py3-none-any.whl
- Upload date:
- Size: 11.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2c85ceaf902f40a86e47c49dd293db0127f1caa3929199df6ed691d1f0649a31
|
|
| MD5 |
6386f997470844aa43c368d58d998cb4
|
|
| BLAKE2b-256 |
55dd693f35c266f3283246d89a6611ec59472fc66fe08d16bd194c8a0b67ca0c
|