# Created 2023-10-14 Sat 14:28
#+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
*** workout
The work out command generates a random workout. The current options are:
- ~iron-cardio~
- ~abc~

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

Iron cardio workouts are built from the following parameters:

|--------------------------+-------------------------|
| Parameter                | Options                 |
|--------------------------+-------------------------|
| *Single Bell Variations* | Classic                 |
|                          | Classic + Pullup        |
|                          | Classic + Snatch        |
|--------------------------+-------------------------|
| *Double Bell Variations* | Double Classic          |
|                          | Double Classic + Pullup |
|--------------------------+-------------------------|
| *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                    |
|--------------------------+----------------------------|



*** done
The ~done~ command saves the most recently generated workout to the database. The current options are:
- ic
- abc
- btb


When run with no argument, the ~done~ command will attempt to use the most recently generated random workout. To save a custom workout, add the workout type as an argument. For example, to save a custom Armor Building Complex workout use an argument of ~abc~.

#+begin_src
kettlebells done abc
#+end_src

**** btb

The done command with an argument of ~btb~ will 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 done 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 |
|-------------+----------------------------------|

*** last
The ~last~ command displays the last saved workout and calculates the amount of weight moved, the total reps, and the pace (sec/rep).

#+begin_src bash
kettlebells last
#+end_src

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

#+begin_src bash
kettlebells stats
#+end_src

To plot the weight moved per workout, use the ~--plot~ flag.

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

*** best
The ~best~ command displays the top ten workout based on the weight moved.
#+begin_src bash
kettlebells best
#+end_src
