Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tahahachana/wodgen
A CLI for drafting my daily workouts
https://github.com/tahahachana/wodgen
calisthenics cli rust workout
Last synced: 29 days ago
JSON representation
A CLI for drafting my daily workouts
- Host: GitHub
- URL: https://github.com/tahahachana/wodgen
- Owner: TahaHachana
- License: mit
- Created: 2024-11-09T14:50:52.000Z (about 2 months ago)
- Default Branch: main
- Last Pushed: 2024-12-01T10:59:39.000Z (about 1 month ago)
- Last Synced: 2024-12-01T11:29:55.423Z (about 1 month ago)
- Topics: calisthenics, cli, rust, workout
- Language: Rust
- Homepage:
- Size: 46.9 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# wodgen
`wodgen` is a Rust-based command-line application that drafts my daily workouts based on specified exercise types, difficulty level, and other parameters. The program reads exercises from CSV files, filters them based on the provided criteria, and outputs a workout plan in CSV format.
## Features
- Supports multiple exercise types: Cooldown, Core, Legs, Pull, Push.
- Allows specifying the difficulty level: Beginner, Intermediate, Advanced.
- Defaults to including bodyweight-only exercises.
- Generates a draft workout plan with a specified number of super-sets.
- Includes a cooldown exercise at the end of the workout.
- Snoozes selected exercises for 7 days to avoid repetition in the next few workouts.## Usage
Run the program with the desired options:
```sh
./wodgen [OPTIONS]
```### Options
- `-t, --types `: Exercise types to include in the workout (e.g., core, legs, pull, push). This option is required and can accept multiple values.
- `-g, --groups `: Number of super-sets to include in the workout. Default is 2.
- `-l, --level `: Level of difficulty for the workout (beginner, intermediate, advanced). Default is intermediate.
- `-e, --exercise-library-dir `: Path to the exercise library directory. Default is `./exercise_library`.
- `-w, --workouts-dir `: Path to the directory where the workouts are saved. Default is `./workouts`.
- `-b, --bodyweight `: Whether to include only bodyweight exercises in the workout. Default is true.### Example
```sh
./wodgen -t push core
```This command drafts a workout plan that includes push and core exercises, with 2 super-sets, at the intermediate level.
Draft workout:
![draft workout](./screenshots/draft_workout.png)After a few edits:
![final workout](./screenshots/final_workout.png)## CSV File Format
### Exercise CSV
The exercise CSV files should have the following columns:
- `name`: Name of the exercise.
- `exercise_type`: Type of the exercise (Cooldown, Core, Legs, Pull, Push).
- `exercise_category`: Category of the exercise (Primary, Secondary, Accessory).
- `exercise_level`: Level of the exercise (Beginner, Intermediate, Advanced).
- `exercise_programming`: Programming type of the exercise (Distance, Reps, Time).
- `bodyweight`: Whether the exercise is bodyweight (true/false).
- `goal`: Goal of the exercise (optional).
- `video`: Path to a video demonstrating the exercise.### Snoozed Exercises CSV
The snoozed exercises CSV file should have the following columns:
- `name`: Name of the snoozed exercise.
- `timestamp`: Timestamp when the exercise was snoozed.## Rep Scheme Guide
- Pyramid: 2 - 4 - 6 - 8 - 6 - 4 - 2
- Reverse Pyramid: 8 - 6 - 4 - 2
- Straight: 8 - 8 - 8
- Ladder: 1 - 2 - 3 - 4 - 5 - 4 - 3 - 2 - 1
- Descending Ladder: 5 - 4 - 3 - 2 - 1
- Ascending Ladder: 1 - 2 - 3 - 4 - 5
- Time-Based Ladder: instead of counting reps, you can base the ladder on time, 20s - 30s - 40s - 50s - 60s for example
- Superset: perform two exercises back to back with no rest in between
- Dropset: perform a set to failure, then reduce the weight/intensity and perform another set to failure
- Rest-Pause: this involves performing a set to failure, then resting for a short period before performing another set to failure, Set 1 - Rest - Set 2
- Tri-Set: perform three different exercises back-to-back with no rest in between
- Giant Set: perform four or more exercises back-to-back with no rest in between
- AMRAP: as many reps as possible in a set period
- EMOM: set number of reps every minute## License
This project is licensed under the MIT License. See the [LICENSE](LICENSE) file for details.
## Acknowledgements
This project relies on the following Rust crates:
- `clap`
- `rand`
- `chrono`
- `serde`
- `serde_derive`
- `csv`
- `anyhow`
- `log`
- `simplelog`
- `assert_cmd`
- `predicates`
- `pretty_assertions`