Inspiration

For most of our lives, we have struggled with our weight. A large portion of this was because we had no guidance through our weight loss journey. It would certainly be a pity if others had to experience what we went through. This was the main inspiration for our weight loss project. We also wanted to create a project that utilized all our strengths: Hengrui knew machine learning, Raghav and Nishanth knew frontend web development, and Snehil handled backend web development.

What it does

FitGoals takes in user inputs on these parameters: Density, Age, Weight, Height, Neck, Chest, Abdomen, Hip, Thigh, Knee, Ankle, Biceps, Forearm, and Wrist. Using these parameters, we implemented a machine learning program that gathers this information and approximates the body fat percentage of the person. Using this information, a workout schedule is developed for the particular user.

How we built it

For the machine learning portion, we experimented with many different python libraries, but in the end, the main one we used was sklearn. The dataset was from kaggle, and is called bodyfat.csv. The model was trained using the extra trees regressor. As for the backend, the model was saved in a binary format and loaded on a Flask web server hosted on the cloud. The purpose of this was to let the client access the model easily by making requests containing the query parameters needed for the model, and the server would predict and respond with the output. Finally, the frontend was built using React and Next.js in order to easily compose a UI efficiently. The UI itself was built using Material UI components, which provide a standard and good-looking design system for the application. All of the internal logic was handled through Javascript.

Challenges we ran into

None of us knew how to get input features from the user, and calculate a label prediction from that. We needed to do a large amount of research to figure out these issues, but in the end we were able to connect all three parts of the app together in a simple yet powerful package.

Accomplishments that we're proud of

Hosting the machine learning model on a Python Flask webserver.

What we learned

We learned fundamentally how we can incorporate machine learning into a website. We learned how we can use next.js to combine the browser (using react) and the backend (node) effectively. Some of us learned more about the fundamentals of html and css as well. Overall, we all had a really great time building FitGoals.

What's next for FitGoals Fitness App

We hope to add a more detailed planning service with integration into users’ personal calendars, as well as an authentication system to save data across devices.

Built With

Share this project:

Updates