GideonNeedleman / 5x5

0 stars 0 forks source link

5x5 Tracker

This app serves as a fitness tracker for the 5x5 Workout Program. It tracks your progress and has a rest timer when you're between your sets. You can customize and create new workouts with different exercises. Finally you can view historical data and visualize your progress.

5x5 Workout Program

The 5x5 program is fairly simple. It consists of 5 different compound exercises: Squat, Bench Press, Barbell Row, Overhead Press and Deadlift. These 5 exercises are split across two different workout routines:

You do 5 sets of 5 reps for each exercise (hence the 5x5 name) except for Deadlifts, where you only do a single set of 5 reps.

The goal is to do three workouts per week, alternating between A days and B days with at least a single rest day between workouts. You progressively increase the weight you lift over time to gain strength. A tracking app helps you monitor your progress.

Project Planning

  1. Gather requirements & features
  2. Divide app into pages
  3. Divide app into feature categories
  4. Decide on what libraries to use (tech stack)

When building:

  1. Build basic UI
  2. Add in state & logic

Project requirements

App Pages

Select Workout

Edit Workout

Do Workout

History

Menu

Feature Categories

Tech Decisions

Workflow

Main Workflow

This is the most common workflow when using the app to track your workout and everything is already set up correctly:

  1. Select Workout page
    1. Choose existing workout
    2. Redirect to Do Workout page
  2. Do Workout page
    1. Begin workout
    2. Next set auto opens
    3. Do set
    4. Log set / start rest timer, repeat steps 2-4 until all sets completed.
    5. Workout auto finishes upon logging final set.
    6. Redirect to History page
  3. History page
    1. Display stats for last completed workout

Altogether it's:

Setup New Workout Workflow

This workflow is for when you want to setup a new workout

  1. Select Workout page
    1. Add Workout
    2. Redirect to Edit Workout page
  2. Edit Workout page
    1. Name Workout
    2. Add Exercise
    3. Opens modal to select desired exercise
    4. Input default weight for set (optional)
    5. Input default number of reps for set (optional)
    6. Copy for default number of sets (optional)
    7. Can edit sets to change default weight/rep values
    8. Repeat 1-6 for additional exercises
    9. Save workout
    10. Redirect to Select Workout page

Copy / Edit Workout Workflow

These workflows are for copying & editing existing workouts

Copy

  1. Select Workout page
    1. Open context menu for target workout
    2. Select copy from modal window
    3. Copy of workout with name 'Copy of Workout_name' is auto added to Workout list

Edit

  1. Select Workout page
    1. Open context menu for target workout
    2. Select edit from modal window
    3. Redirect to Edit Workout page
  2. Edit Workout page
    1. Rename workout (optional)
    2. Edit exercises, reps, sets as when creating new workout.
    3. Save workout
    4. Redirect to Select Workout page

Data Modelling & Flow

Hierarchy

Program > Workout > Exercise > Set > Rep

Tables

Note There can be multiple copies of the same exercise. For example let's say there's a canonical 'bench press' exercise that describes the exercise. Each workout could have a copy of that exercise, or it could even occur multiple times within a single workout. For example 'bench press' x 5 sets, then do a bunch of other pressing exercises, then finish with 'bench press' x 2 sets. The second time you do 'bench press' you are much weaker and are finishing off the workout. It's useful to track the data as a separate exercise, but also as the same exercise... Like user should have a choice when it comes to visualization. S

Potential Issues

There may be some kinds of exercises that are not done in sets or reps, like timed exercises. Running may be timed or measured in length. Holds like planks could be timed. Bodyweight exercises may not have a defined weight. Or you may do a sequence of exercises one after the other without rest and without any reps at all. Or something like a drop set where it's not easy to log the number of reps you do at each weight within the set.

Niggles

To do