Skip to main content

A Python CLI that generates strength, cardio, and HIIT exercise routines using parametric curves

Project description

Routinemaker

Routinemaker is a Python CLI that generates strength, cardio, and HIIT exercise routines using parametric curves. Routines are saved as Excel spreadsheets. See routinemaker.me for documentation.

Installation

Routinemaker is a Python 3 package and can be installed through pip.

$ pip install routinemaker

Usage

Run Routinemaker from the command line. The command does not take any options. You will be prompted as the generator walks through all the options.

$ routinemaker

Outputs

Routinemaker generates formatted Excel spreadsheets. You can either print out the spreadsheets or upload them to the cloud (ie: Google Drive) to make them easier to use during workouts. Below are screenshots, downloadable files, and a brief usage guide for sample routines.

Strength (download)

Usage: On Day 1, do 2 sets of 5 reps of dumbbell goblet squats with 50 pounds of weight, then do 2 sets of 3 reps of barbell bench presses with 20 pounds of weight. Mark an "X" in the corresponding white box as you finish each set.

Cardio (download)

Usage: On Day 1, run for 2.5 minutes, then rest by walking. Next, run for 1.5 minutes, then rest by walking. Finish all 6 intervals and mark an "X" in the corresponding white box as you progress.

HIIT (download)

Usage: On Day 1, do 2 sets of 9 reps of bodyweight side lunges for each side, then do 2 sets of 5 reps of bodyweight jump squats, then do 2 sets of 10-second bodyweight forearm planks. Mark an "X" in the corresponding white box as you finish each set.

Customizations

Routinemake is meant to be customized to your preferences. In particular, you may want to modify the list of exercises or tweak the equations for the curves used to generate the workouts.

Exercises

You can customize the list of exercises that Routinemaker uses to generate workouts. The exercises are stored in data/exercises.json. Each exercise in the json file includes settings for type (ie: strength), muscle group (ie: chest), variations (ie: by equipment), unit of measurement (ie: reps or seconds), minimum units, maximum units, and the step for incrementing the units.

Curves

You can also customize the curves that Routinemaker uses to generate workouts. The calculation logic is stored in routine.py. Routinemaker comes with 3 default curves: linear (constant increase in difficulty), exponential (starts off easy and escalates in difficulty towards the end), and logarithmic (ramps up quickly).

Workflow

Routinemaker works by prompting for a variety of settings and then feeding the parameters into curves in order to generate workouts for each day. Below are a few sample screenshots of the workflow and a summary of all the prompts and options.

Splash Screen

Filtering Equipment for Strength Exercises

Manually Selecting Strength Exercises

Choosing Random List of HIIT Exercises

Editing Cart of Exercises

Choosing Goals for Strength Exercises

Configuring Intervals for Cardio Exercises

Summary of Prompts and Options

├── What type of routine do you want to create?
│    ├── STRENGTH
│    │    ├── What type of equipment do you have access to?
│    │    └── How would you like to choose the exercises for your routine?
│    │         ├── START WITH A RANDOM LIST OF EXERCISES
│    │         │    ├── Which muscle groups do you want to train?
│    │         │    └── How many exercises do you want in your routine?
│    │         └── MANUALLY ADD EXERCISES [∞]
│    │              ├── Pick a muscle group to browse exercises to add
│    │              └── Which exercise would you like to add?
│    ├── CARDIO
│    │    └── Which cardio activity would you like to do?
│    │         └── Which specific exercise would you like to work on?
│    └── HIIT
│         └── How would you like to choose the exercises for your routine?
│              ├── START WITH A RANDOM LIST OF EXERCISES
│              │    ├── Which muscle groups do you want to train?
│              │    └── How many exercises do you want in your routine?
│              └── MANUALLY ADD EXERCISES [∞]
│                   ├── Pick a muscle group to browse exercises to add
│                   └── Which exercise would you like to add?
├── Do you need to edit or reorder the exercises in your routine? [∞]
│    ├── YES
│    │    └── What would you like to do?
│    │         ├── ADD EXERCISE
│    │         │    ├── Pick a muscle group to browse exercises to add
│    │         │    └── Which exercise would you like to add?
│    │         ├── REMOVE EXERCISE
│    │         │    └── Which exercise would you like to remove?
│    │         ├── SWAP EXERCISE
│    │         │    ├── Which exercise would you like to swap?
│    │         │    ├── [STRENGTH/HIIT]
│    │         │    │    ├── Pick a muscle group to browse exercises to add
│    │         │    │    └── Which exercise would you like to add?
│    │         │    └── [CARDIO]
│    │         │         └── Which exercise would you like to add?
│    │         └── REORDER EXERCISE
│    │              ├── Which exercise would you like to move?
│    │              └── Which exercise would you like to move it before?
│    └── NO
├── How many weeks would you like your routine to last?
├── How many days per week are you planning on exercising?
├── [FOR EACH EXERCISE]
│    ├── Which variation of EXERCISE do you plan on doing?
│    ├── How many continuous UNITS of ACTIVITY are you currently comfortable with?
│    ├── How many continuous UNITS of ACTIVITY is your goal?
│    └── [STRENGTH]
│         ├── What weight are you currently using for ACTIVITY?
│         └── What's your goal weight for ACTIVITY?
├── [STRENGTH/HIIT]
│    ├── What's the mininum number of sets you'd like to do for each exercise?
│    └── What's the maximum number of sets you'd like to do for each exercise?
├── [CARDIO]
│    ├── What's the maximum number of intervals you want in your routine?
│    └── Please choose a random number to seed the routine
├── What type of curve do you want to use to create your routine?
│    ├── LINEAR
│    ├── EXPONENTIAL
│    └── LOGARITHMIC
└── What do you want to name the output file?

Disclaimer

Routinemaker is an automated engine that generates workout routines independent of your physical ability. Generated workouts may not be suitable for your level of fitness. Please use common sense. You should see your healthcare provider before starting a new exercise program.

License

Routinemaker was created and open-sourced under the MIT License by Kathy Qian.

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

routinemaker-0.5.3.tar.gz (12.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

routinemaker-0.5.3-py3-none-any.whl (12.3 kB view details)

Uploaded Python 3

File details

Details for the file routinemaker-0.5.3.tar.gz.

File metadata

  • Download URL: routinemaker-0.5.3.tar.gz
  • Upload date:
  • Size: 12.6 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

File hashes

Hashes for routinemaker-0.5.3.tar.gz
Algorithm Hash digest
SHA256 56fe213cdfa91765d932bd3f3df3a40a433dba8c6b7413e885e0356bf54cb936
MD5 b3bed5063474ee1b8ccf6549e739445e
BLAKE2b-256 5575d738b323c1eb77b2fe1b807f9580fed3e853945df5d71d953cf2735a6899

See more details on using hashes here.

File details

Details for the file routinemaker-0.5.3-py3-none-any.whl.

File metadata

  • Download URL: routinemaker-0.5.3-py3-none-any.whl
  • Upload date:
  • Size: 12.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.21.0 setuptools/41.0.1 requests-toolbelt/0.9.1 tqdm/4.31.1 CPython/3.6.5

File hashes

Hashes for routinemaker-0.5.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4c8bf7034a06f09b3f9afaebeaa0b351f9425d1d9481b8162b7586904c136793
MD5 37ef003ca0ad599c3f16656312b6906c
BLAKE2b-256 29df7d8bdf32eb8390134c84b54f62bf85100449b8b75f092d9f4d72808c636c

See more details on using hashes here.

Supported by

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