Inspiration

We always wished that there was a tool to tell you what to cook when you don't have any ideas, and we hoped that the machine learning component would always recommend a recipe you will enjoy.

What it does

Our website has two primary functions. First, it has hundreds of recipes with ingredients, directions, and other information, along with a powerful search tool to quickly find specific recipes. Second, it has a recommended recipes section, which is based on recipes you have 'liked' on the website. Then, our machine learning algorithm finds recipes similar to ones you have enjoyed and recommends them to you.

How we built it

For the website, we used TJ Director with HTML, CSS, and Javascript using an Alpine Node.js Docker image along with a SQL server. Then, we connected it to a Python script which queried our pre-trained machine learning Random Forest Classifier. The Python script then outputted the results back to Javascript. The Random Forest Classifier was built on Google Colab using scikit-learn and pandas, then saved with joblib.

Challenges we ran into

One challenge we ran into was how to host the machine learning model, since we originally wanted to host it on the cloud. We experimented with AWS EC2 instances as well as the Google Cloud, but eventually we realized that we could just train the model on Google Colab, save it with joblib, and put the model on TJ Director itself. Then, we could write a Python script to access it from Javascript. We spent numerous hours trying to send and receive data to and from the Python script, experimenting with various Javascript techniques along the way. OAuth was also something we struggled with, so we decided to implement our own custom authorization system using a mySQL database. Another time-consuming issue we ran into was finding images for all of our recipes, since our dataset did not have them and all of the APIs cost money to use. Therefore, we handpicked nearly 500 beautiful images for every recipe in our database (thanks Kevin).

Accomplishments that we're proud of

We were able to make a beautiful front-end website design that looks like it could have been professionally made. We also learned how to integrate (and when not to integrate) many technologies ranging from HTML/CSS/Javascript to Python to a Linux server to a mySQL database.

What we learned

We learned about front-end web design, server hosting, databases, machine learning algorithms, Docker, and how to integrate all of it.

What's next for Recipes For Me

We hope to improve upon the machine learning algorithm eventually by taking in data such as the time of day, what recipes are popular among all users, and specific ingredients the user does not want in any recipes (for example, a user could hide all recipes that have an ingredient they are allergic to).

Share this project:

Updates