As a recent high school graduate with a lot of time on his hands this summer, I was convinced to go to the gym by my friends to get into shape. I was confused by the proper form to weight lifting, bored by how uninteresting logging all my weightlifting was, and found it difficult to stay motivated to both go to the gym and record everything. Thus I was inspired to create FitFriend because I wanted a fun, interactive way that was also highly customizable to solve all of these problems.

What it does

Personalize: FitFriend asks for a variety of factors like gender, age, height, weight, goal, and activity to determine your caloric and your macronutrient needs. It also comes with a set of predefined workouts.

How to do an Exercise: It has exercise videos stored in its database, so a user can learn how to do an exercise by prompting for the video.

Record an Exercise/run: allows the user to specify the weight, reps, and set, or distance and time when recording a run. Much more interactive than using a spreadsheet!

Set own workout routine: lets the user decide what exercises to do each day.

Get exercise history: see your progression on any exercise you specify

Record food : tell FitFriend what food you ate and have it calculate the number of calories / macronutrients

Here's the twist: if you do go over your caloric or macronutrient limits or don't finish your workouts the day before, you're given the option to provide an excuse. The excuse system is to encourage users to record the honest and whole truth even if they know they're going over their limits since they have justification if necessary and can be used for future reference. Excuses aren't to provide a valid reason to break your limits all the time - just when you do, you have the ability to explain why. The way to find out what excuses you gave is to tell FitFriend to 'make me disappointed in myself'.

Get Day Info: summarizes everything that happened in a day of the user's choice, including what exercises you did, which foods you ate, and which limits you violated

How I built it

Lots of lex, python, lambda and DynamoDB Try it out here: Add to Slack

Challenges I ran into

Learning about the update method on boto3, debugging when CloudWatch logs weren't responding

Accomplishments that I'm proud of

Learning from scratch all of the amazon web services that I used in such a short time. Learning how to chain events effectively :)

What I learned

I learned that Lex is amazingly versatile in conjunction to all the other services provided. I can't wait to learn how to use more of the services!

What's next for FitFriend

Connection to actual food and exercise databases, recording meal which consists of multiple food components, more severe repercussions for excuses if they grow out of hand, such as posting them to social media

Share this project: