Skip to main content

A CLI tool to create, save, and track progress of kettlebell workouts.

Project description

# Created 2023-10-28 Sat 16:55
#+options: toc:t
#+title: kettlebells
#+author: Russell Helmstedter
#+description: README file for iron-cardio cli tool
#+keywords: kettlebells, iron cardio, cli
#+language: en
#+export_file_name: ../README.org

kettlebells is a CLI designed to create, save, and track the progress of kettlebell workouts. The inspiration for this project came from [[https://www.chroniclesofstrength.com/what-strength-aerobics-are-and-how-to-use-them-w-brett-jones/][Pat Flynn's conversation with Bret Jones]]. (For a more detailed look at Iron Cardio, go checkout the [[https://strongandfit.com/products/iron-cardio-by-brett-jones][Iron Cardio Book]] by Bret Jones.) After starting an [[https://github.com/rhelmstedter/iron-cardio][initial project]] that focused only on iron cardio, I wanted to be able to add more. This is essentially a fork of the iron-cardio project designed to add various workouts such as the armor building complex, and dry fighting weight.

In version 0.2.1, the way workouts are constructed has completely changed. This will allow users to construct their own custom workouts in the future. It will also allow the stats to keep track of how many reps of each type of exercise have been done.

* Installation
Use [[https://github.com/pypa/pipx][pipx]].

#+begin_src bash
pipx install kettlebells
#+end_src

* Usage
** Initialize
Run the ~init~ command. This creates the database.

#+begin_src bash
kettlebells init
#+end_src

Next, run the ~setloads~ command. This sets the units to either pounds (lbs) or kilograms (kg), the user's bodyweight, and the loads for the light, medium, and heavy kettlebell. This command can be run as needed when the user is ready to move up in load or bodyweight changes.

#+begin_src bash
kettlebells setloads
#+end_src

** Commands
*** random
The work out command generates a random workout. The current options are:
- ~ic~ (Iron Cardio)
- ~abc~ (Armor Build Complex)

**** iron-cardio
The ~random~ command with an argument of ~ic~, generates a random iron cardio workout.
#+begin_src bash
kettlebells random --workout-type ic
#+end_src

Iron cardio workouts are built from the following parameters:

|--------------------------+--------------------------|
| Parameter | Options |
|--------------------------+--------------------------|
| *Single Bell Variations* | Classic |
| | Classic + Pull-up |
| | Classic + Snatch |
|--------------------------+--------------------------|
| *Double Bell Variations* | Double Classic |
| | Double Classic + Pull-up |
|--------------------------+--------------------------|
| *TIMES* | 30 mins |
| | 20 mins |
| | 10 mins |
|--------------------------+--------------------------|
| *LOADS* | heavy |
| | medium |
| | light |
|--------------------------+--------------------------|
| *SWINGS* | 0 - 150 |
|--------------------------+--------------------------|

**** abc
The workout command with an argument of ~abc~ will generate a random armor building complex workout.

#+begin_src
kettlebells workout abc
#+end_src

|--------------------------+----------------------------|
| Parameter | Options |
|--------------------------+----------------------------|
| *Single Bell Variations* | Armor Building Complex 2.0 |
|--------------------------+----------------------------|
| *Double Bell Variations* | Armor Building Complex |
|--------------------------+----------------------------|
| *TIMES* | 25 mins |
| | 20 mins |
| | 15 mins |
| | 10 mins |
|--------------------------+----------------------------|
| *LOADS* | heavy |
| | medium |
| | light |
|--------------------------+----------------------------|
| *SWINGS* | 0 - 100 |
|--------------------------+----------------------------|

*** save
The ~save~ command saves workouts to the database. The current options are:
- ic
- abc
- btb
- pw
- custom


When run with no option, the ~save~ command will attempt to use the most recently generated random workout. Otherwise, use the ~--workout-type~ option, e.g.:

#+begin_src
kettlebells save --workout-type abc
#+end_src

**** btb

The save command with an ~--workout-type~ of ~btb~ allows the user to save a Back to Basics Workout. These workouts are constructed based on The Pat Flynn Show episode with Dan John [[https://patflynnshow.libsyn.com/the-best-kettlebell-program-for-beginners-the-btbkp][The BEST Kettlebell Program for GEGINNERS | THE BTBKP]]. The choices are ladders of 2-3-5 clean and presses followed by either snatches or double front squats. The warm up and cool exercises are not included in the workout.

#+begin_src
kettlebells save --workout-type btb
#+end_src

The program options are:

|-------------+----------------------------------|
| First block | Second Block |
|-------------+----------------------------------|
| 2 ladders | 60 Snatches |
| 3 ladders | 80 Snatches |
| 5 ladders | 100 Snatches |
|-------------+----------------------------------|
| 2 ladders | 10 sets of 5 Double Front Squats |
| 3 ladders | 10 sets of 5 Double Front Squats |
| 5 ladders | 10 sets of 5 Double Front Squats |
|-------------+----------------------------------|

**** pw

The save command with a ~--workout-type~ option of ~pw~ saves versions of [[https://youtu.be/aHQLx_HhFqo?si=b68xBn41-tcGDVJE][Dan John's Perfect Workout]]. While in the video Dan does hip thrusts until it burns, for ease of recording the workout, ~kettlebells~ offers a prescribed number of 15 reps for the hip thrust.

#+begin_src
kettlebells save --workout-type pw
#+end_src

The program options are:

|-----------+------------------------------------------+------+---------|
| Variation | Exercises | Sets | Reps |
|-----------+------------------------------------------+------+---------|
| Original | Half-kneeling Press | 3 | 8 |
| | Hanging Leg Raise | 3 | 8 |
| | Banded Hip Thrust | 3 | 8 |
| | Bulgarian Goat Bag Swing | 3 | 8 |
| | Goblet Squat / Broomstick Overhead Squat | 1 | 8 |
|-----------+------------------------------------------+------+---------|
| Indoor | Half-kneeling Press | 3 | 8 |
| | Child's Pose | 3 | 20 secs |
| | Hip Thrust / Clam Shell (15, 14, 13...) | 1 | 120 |
| | Goblet Squat / Broomstick Overhead Squat | 1 | 8 |
|-----------+------------------------------------------+------+---------|
| The Bull | Half-kneeling Press | 3 | 8 |
| | Hanging Leg Raise | 3 | 8 |
| | Banded Hip Thrust | 3 | 8 |
| | Bent Over Rows | 3 | 8 |
| | Goblet Squat / Broomstick Overhead Squat | 1 | 8 |
|-----------+------------------------------------------+------+---------|

**** custom
When the ~save~ command is run with the a ~--workout-type~ of custom, allows the user to save a custom workout. Custom exercises need a ~workout_type~ and a ~variation~. The default is ~custom~. Exercises can be chosen via a fuzzy finder. Select ~Other~ to add a custom exercise. Select ~Done~ or press escape when finished adding all the exercises.

#+begin_src
kettlebells save --workout-type custom
#+end_src

***** Reps and Loads for Custom Exercises
Unilateral exercises such as the single arm overhead press (simply "Press" in the program) should have the reps doubled. For example, if the set and rep scheme is 3 sets of 8 single arm presses on the left and right arm, that should be saved as 16 reps per set for that exercise.

When the stats are calculated, any exercise that has "Double" in it gets multiplied by 2. So Double Pressing a pair of 24 kg kettlebells should be saved as a load of 24 kg, but the calculations will result in 48 kg per rep. If using uneven sized bells, use the average weight of the two bells rounded to the nearest integer.

***** Suggested Use for Complexes
Consider a workout out like the [[https://www.youtube.com/watch?v=nHPfglRCp6M&t=13s][8 - 5 - 3 Rep Scheme]] from Pat Flynn. The ~workout_type~ would be "complex", the ~variation~ would be "8-5-3 Rep Scheme". Technically, a set consists of 8 Goblet Squats, 5 Start Stop Swings, 3 Push-ups. Then you would repeat this for 5 rounds. However, in ~kettlebells~ the user will add each exercise separately. So the Goblet Squat would be 5 sets of 8. The Start Stop Swing would be 5 sets of 5, and the Push-up would be 5 sets of 3.

*** last
The ~last~ command displays the last saved workout and calculates the stats for it.

#+begin_src bash
kettlebells last
#+end_src

*** stats
The ~stats~ command displays the aggregated workout count, time, weight moved, number of reps, and density for all workout in the database.

#+begin_src bash
kettlebells stats
#+end_src

**** plot
To display a line plot of the weight moved per workout, use the ~--plot line~ option. Add a line at the median with ~--median~ or at the mean with ~--average~.

#+begin_src bash
kettlebells stats --plot line
#+end_src

To display a horizontal bar plot grouped by month, use the ~--plot bar~ option.

#+begin_src bash
kettlebells stats --plot bar
#+end_src

To display an event plot of the current year, use the ~--plot event~ option.

#+begin_src bash
kettlebells stats --plot event
#+end_src


**** calendar
To display a calendar of workouts in a given year, use the ~--calendar~ flag and pass the year as the argument (defaults to current year if no argument is passed).

#+begin_src bash
kettlebells stats --calendar 2023
#+end_src

**** best
The ~best~ command displays the top ten workout based on the weight moved.

#+begin_src bash
kettlebells stats --best
#+end_src

Use the ~--sort~ option to sort the table by:
- weight-moved (default)
- reps
- weight-density
- rep-density
- time

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

kettlebells-0.2.17.tar.gz (28.3 kB view hashes)

Uploaded Source

Built Distribution

kettlebells-0.2.17-py3-none-any.whl (28.0 kB view hashes)

Uploaded Python 3

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page