Every member of our group had experienced the same problem when it came to working out at the gym. It seemed that one either entered the gym knowing nothing and feeling completely intimidated, or with a specific exercise plan in mind that was ultimately foiled by a lack of appropriate equipment.

What it does

FOSSfit (a play both on FOSS – Free, Open-Source Software – and Crossfit) is a workout planner that relies on crowd-sourced information about the equipment available at gyms in order to create a relevant workout for the user. Additionally, users can specify how long they want to spend exercising and how intense they want their workout to be. An algorithm then designs the optimal workout plan, and guides the user through it with instructions.

How we built it

FOSSfit stores its data in a Firebase NoSQL database, which means that data is transmitted in pure JSON. As a result, it was a clear choice to take advantage of the JavaScript ecosystem by opting to use Express and Node.js for our website. The front-end is built using Materialize.css, a CSS library inspired by Material Design, and Handlebars.js for templating. Additionally, many Python scripts were used to crawl the web, mine for data, and refine the workout algorithm.

Challenges we ran into

One of the most challenging facets of our development process was the workout algorithm. Aside from our many unexpected encounters with the many idiosyncrasies of JavaScript, it proved much more difficult than expected to produce a fair, balanced, but ultimately practical workout plan. A notable example occurred in an early design, in which the user requested a full-body workout. We interpreted "full-body" as just that – every muscle group covered by the algorithm should be equally exerted. However, our algorithm had a handful of light stretches for the neck. As a result, the algorithm would suggest the user stretch their neck for hours on end, in order to exert themselves!

Accomplishments that we're proud of

Coming into Hack the North, none of us were expecting to work with one another; we were all in pre-ordained teams. However, before we knew it, we ended up in a group together, discussing ideas for a project before ultimately settling on FOSSfit. As a diverse group of developers, we were each able to contribute our unique skills to the project. Some of the group members were strictly back-end developers; some strictly front-end; and some were comfortable in both. As a result, we were always able to collaborate on difficult problems and make a finished product.

What we learned

In order to successfully complete FOSSfit, each of us was required to step firmly out of our comfort zones and learn new skills from across the field. The same team member who designed the Firebase database also helped design the user experience; the front-end developer ended up playing a key role in diagnosing problems with the algorithm. We are all more experienced and well-balanced developers for it!

What's next for FOSSfit

We had so much fun building FOSSfit, we hope that we are able to continue building it and aggregating more data in the future. That's not to mention all the inside jokes that were born during its creation!

Share this project: