We were inspired by the plight of the college student who simultaneously has both too much and too little in their fridge. What they need is a way to keep track of what's in the fridge at all times, even as roomates and friends come and use the fridge at will. Having a reminder system for when food is expired or when supplies or low, wouldn't hurt either. This is where we come in.
What it does
We built a webapp that is integrated with Amazon Alexa to track the contents of your fridge, pantry, etc. All you need to do is tell Alexa what you've got and she'll handle the rest. If you're running out of meal ideas, you can also ask her and she'll tell you what you can make with what you've got on hand.
How we built it
It was built with a node.js and express backend hooked into a mongodb database. To interact with it, we use Amazon Alexa server API to turn user statements into database services. For ease of development with the backend server we used alexa-verifier, alexa-app, babel, body-parser, browserify, ejs, passport.js, mongoose, gulp, react, vinyl-source-stream, bcrypt-nodejs, and http-errors node packages.
Challenges we ran into
Amazon Alexa skills are most easily built within the AWS ecosystem, using Lambda functions and even DynamoDB tables. Since we have a web application and back-end outside of that system, we needed to send Alexa’s interactions to HTTPS instead of Lambda. Getting this connected was a challenge because of the amount of moving parts required. Not only did our node server have to comprehend and accept the Alexa requests accurately, it also had to parse and send back usable data that Alexa could understand. Making both ends of this work with Amazon's security checks was a challenge, but it was one we overcame.
What's next for myFridge.tech
An initial goal was to link a Braintree payment system to the backend, so that a purchase made there would automatically add its transaction items and amounts to the stored ingredients list. This would make our app even easier to use. Certainly, deeper processing of even more user interactions built into the Alexa skill -- like “tell me which of the possible meals has the lowest calories”, or other meal tailoring -- would make this a more useful and engaging experience.