Time:
January 2020 – 3 weeks

Main technologies used:
React Native, Redux, Ruby on Rails (as an API), React Native SVG Charts

Github Repositories:

Video Walkthrough

Pyramid is a weightlifting app that tracks progress and suggests what to do next based on the GZCL Linear Progression weightlifting program. It was my final project during my time at Flatiron school.

Motivations

Weightlifting has been one of my growing hobbies for a while now and the training program mentioned above helped me get stronger pretty quickly when I was starting out.

When I was mulling over project ideas, my gut instinct was to work on a project that solved a problem that I was dealing with. Working with spreadsheets in the gym on my phone felt clunky, so I took inspiration from other gym apps to make a project that suited my needs

Logo for Pyramid

Challenges

The challenges for developing this app could be split up into two categories: front end challenges and back end challenges. Front end challenges included the following:

  • Learning React Native and integrating Redux into my program
  • Writing the algorithm that would tell the user what to do next based on previous workouts
  • Displaying data through React Native SVG Charts

Back end challenges, on the other hand, included:

  • Figuring out the models given the nature of how the weightlifting program works. For instance, different workouts could contain a squat in the routine, but a tier 1 type of squat would be different from a tier 2 type. The question I was trying to answer was, “Which models contained which data to allow for this differentiation?”
  • Serializing data in a meaningful way

Ultimately, the structure of my models looked like the following:

Relational Diagram of Models for Pyramid

Takeaways and next steps

Pyramid was a fun project to work on because it tested all that I learned up to that point during my time at Flatiron school. The hardest part was the first couple of days. During that time, I had to get the basic CRUD actions to work and develop the linear progression algorithm. However, once I got out of the way, I got into a rhythm and kept building new features, like data visualization.

I’d like to keep working on this project in the future and add in things like onboarding for new users and further customization to workouts.

Occasional updates

During times in-between jobs, I sporadically make updates to the project to try out different things and give it more functionality. This section lists out the updates that’ll be added as time goes on.

  • August 2020 – Added the ability to create a new account and login to the new account