We can work on software from the comfort of our own home. Being at a Hackathon we had to work with some sort of hardware. One of our teammates brought up that his father had recently bought an Amazon Echo for his house and his parents were looking to get in shape. So immediately I thought of a fitness application for the Amazon Echo.

What it does

Using the Amazon Echo's virtual assistant, Alexa, we programmed a skill to make and track workouts, as well as, being able to design, submit, and even download other people's workouts from our website.

For example, you tell the Alexa, "Alexa start workout" and she will immediately load your default program and tell you your first exercise. When you are finished with that exercise you say "Alexa next exercise" and she will tell you what your next exercise is.

If say you are doing _ bench press for 3 sets of 6 repetitions _, Alexa will tell you your number of sets and repetitions for that day. But if you are doing a timed exercise, such as _ planks for 30 seconds _, Alexa will tell you your exercise, time you, and tell you when you are finished.

How we built it

We used Amazon Alexa's Skill's API and Node.js to be able to interface with the user and pull information from our online database, which was powered by Softheon's Enterprise API. We then used Javascript (jQuery), HTML, and CSS to create workout plans and send data to the database through our website.

Challenges we ran into

We ran into many challenges. The first issue we faced was the actual creation of the Alexa application itself, as in order to test the application, we had to go through Amazon Web Services every single time, which was time consuming and tedious. After the application was created, the next problem we faced was integrating the Softheon API, as Amazon Web Services prevented us from integrating the API directly into the main application. However, our biggest challenge was dealing with the asynchronous nature of Node.js. We had to identify where (and when) the code went wrong in order to make sure that the code ran in the way we needed it to. This culminated in the use of multiple Promise functions in order to manage the flow. In the end, we were able to properly handle the Node.js flow.

Accomplishments that I'm proud of

Our team was able to separately develop aspects of the application, such as front-end, back-end, and the actual Alexa application, and then integrate them all together. In addition, each team member walked away with new skills, such as knowledge of the workings of Node.js, and a much better understanding of the "asynchronous" concept.

What I learned

I learned a lot about the mechanics of Javascript. I also got to utilize Node.js for the first time, which was a painful, yet ultimately rewarding experience. Since I handled the back-end, I also got to work with the Softheon API, in order to handle our database for the workouts. I also experienced the usefulness (and difficulty) of asynchronous calls, and how to manipulate the flow of code using Promise functions.

What's next for Alexa Fitness

Though we ran out of time to implement other third party features, the Alexa Fitness application could be expanded to integrate other applications such as myFitnessPal, which could track and return the amount of calories burnt depending on the exercises and workouts. The Alexa Fitness application could also be expanded to provide support for smartwatches and fitness watches, thereby monitoring heart rate and other bio data, which could be displayed back to the user. Finally, the best way this application could be improved would be through machine learning, where over time, the application would progressively make workouts longer, harder, and overall better for the individual user, creating a better and more personalized workout experience.

Share this project: