Skip to main content

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

Project description

# Created 2024-08-25 Sun 12:45
#+options: toc:t
#+title: kettlebells
#+author: Russell Helmstedter
#+description: README file for kettlebells cli tool
#+keywords: kettlebells, iron cardio, perfect workout, abc, 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.

As of 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 to create 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
*** save
The ~save~ command saves workouts to the database. The current options are:
- [[iron-cardio][ic]]
- [[abc][abc]]
- [[abfb][abfb]]
- [[abf][abf]]
- [[btb][btb]]
- [[pw][pw]]
- [[rop][rop]]
- [[wolf][wolf]]
- [[custom][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 to manually enter a workout, e.g.:

#+begin_src bash
kettlebells save --workout-type abc
#+end_src
**** abfb
When the ~save~ command is run with the workout type of ~abfb~, an armor building formula barbell workout is saved. Currently, the user can choose from variations of Program One, Program Two, and Program Three.

#+begin_src bash
kettlebells save --workout-type abfb
#+end_src
**** abf
When the ~save~ command is run with the workout type of ~abf~, an armor building formula workout is saved. This program alternates between the armor building complex and double kettlebell press. See the [[https://danjohnuniversity.com/bookstore][Dan Jon Bookstore]] for more details

#+begin_src bash
kettlebells save --workout-type abf
#+end_src
**** btb

The save command with a 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 bash
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 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 set number of reps for the hip thrust.

#+begin_src bash
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 | 15 |
| | 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 |
| | Bulgarian Goat Bag Swing | 3 | 8 |
| | Bent Over Rows | 3 | 8 |
| | Goblet Squat / Broomstick Overhead Squat | 1 | 8 |
|------------+------------------------------------------+------+---------|
**** rop

The save command with a workout type of ~rop~ saves versions of Pavel Tsatsouline's rite of passage program from [[https://www.amazon.com/Enter-Kettlebell-Strength-Secret-Supermen/dp/1942812132][Enter The Kettlebell]]. The clean and press and pullups are calculated as ladders, while the swings and snatches are straight sets.

#+begin_src bash
kettlebells save --workout-type rop
#+end_src
**** wolf
The save command with a workout type of ~wolf~ saves workouts from the free program [[https://chasingstrength.com/reports/double-kettlebell-complex/][The Wolf]] from [[https://chasingstrength.com][Geoff Neupert]]. This is a gasser for sure.

#+begin_src bash
kettlebells save --workout-type wolf
#+end_src
**** custom
When the ~save~ command is run with the workout type of ~custom~, the user can save a custom workout. Custom workouts need a ~workout_type~ and a ~variation~. The default is ~custom~. Exercises are chosen via [[https://github.com/dahlia/iterfzf][iterfzf]]. Select ~Other~ to add a custom exercise. Select ~Done~ or press escape when finished adding all the exercises.

#+begin_src bash
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 overhead 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 has the load 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.
*** random
The work out command generates a random workout. The current options are:
- ~ic~ (Iron Cardio)
- ~abc~ (Armor Building Complex)
**** iron-cardio
The ~random~ command with a workout type 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 |
| | Traveling 2s |
|--------------------------+--------------------------|
| *Double Bell Variations* | Double Classic |
| | Double Classic + Pull-up |
| | Double Traveling 2s |
|--------------------------+--------------------------|
| *TIMES* | 30 mins |
| | 20 mins |
| | 10 mins |
|--------------------------+--------------------------|
| *LOADS* | heavy |
| | medium |
| | light |
|--------------------------+--------------------------|
| *SWINGS* | 0 - 150 |
|--------------------------+--------------------------|
**** abc
The random command with a workout type of ~abc~ will generate a random armor building complex workout.

#+begin_src bash
kettlebells random --workout-type abc
#+end_src

|--------------------------+----------------------------|
| Parameter | Options |
|--------------------------+----------------------------|
| *Single Bell Variations* | Armor Building Complex 2.0 |
|--------------------------+----------------------------|
| *Double Bell Variations* | Armor Building Complex |
|--------------------------+----------------------------|
| *TIMES* | 30 mins |
| | 25 mins |
| | 20 mins |
| | 15 mins |
| | 10 mins |
|--------------------------+----------------------------|
| *LOADS* | heavy |
| | medium |
| | light |
|--------------------------+----------------------------|
| *SWINGS* | 0 - 100 |
|--------------------------+----------------------------|
*** last
The ~last~ command displays the last saved workout and calculates the stats for it.

#+begin_src bash
kettlebells last
#+end_src
*** view
Use the ~view~ command to search for previous workouts by date. If you have [[https://github.com/BurntSushi/ripgrep#installation][ripgrep]] installed, use the ~--preview~ flag to view more information about the workout based on the date.

#+begin_src bash
kettlebells view --preview
#+end_src

Use the ~--Program~ flag to filter workouts based on a certain workout_type.

#+begin_src bash
kettlebells view --Program
#+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.

#+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.33.tar.gz (33.5 kB view details)

Uploaded Source

Built Distribution

kettlebells-0.2.33-py3-none-any.whl (32.4 kB view details)

Uploaded Python 3

File details

Details for the file kettlebells-0.2.33.tar.gz.

File metadata

  • Download URL: kettlebells-0.2.33.tar.gz
  • Upload date:
  • Size: 33.5 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Darwin/23.6.0

File hashes

Hashes for kettlebells-0.2.33.tar.gz
Algorithm Hash digest
SHA256 231ff3688775d047cc19375765d8a6872302598d7c99f3e64a9e6acdbfd5e965
MD5 99d3683f28ac9a242b12ee442fee50fa
BLAKE2b-256 7309f0dd0e453bee65773d6628d2d6e7664499093a36df7df71d333f86f788cb

See more details on using hashes here.

File details

Details for the file kettlebells-0.2.33-py3-none-any.whl.

File metadata

  • Download URL: kettlebells-0.2.33-py3-none-any.whl
  • Upload date:
  • Size: 32.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.1 Darwin/23.6.0

File hashes

Hashes for kettlebells-0.2.33-py3-none-any.whl
Algorithm Hash digest
SHA256 f268b5b47b27a6629bfd6ddaaabf9f28184e41d8b103282dd91173d5bb3fbee2
MD5 779ae08e579d4332c548f30bdb60af26
BLAKE2b-256 7d26113f8178757ae5315f5dc4b50a29420e6093fea3833f9db1302dcc1d13ab

See more details on using hashes here.

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