How and why I built a menu planning application: What's on the Menu?
About me
I am Vineet Sharma, a seasoned Software Developer with a Masters degree in Artificial Integence from Bielefeld University. I am currently working at a IT firm called NT-ware (A Canon Subsidiary). In my career as a Software Develper, I got the chance to learn different technologies and architect wonderful projects.
The problem I wanted to solve
There are numerous applications which are good for searching recipes based on certain criteria like cuisine, allergies, ingredients, etc. but none of them could be used as a menu planner for a group of people. So, I created this application with a specific focus on how to plan a menu from recipes for a group of people (friends or family).
What is a menu planning application
The application that I build can, of course, be used for searching recipes. Additionally, a list of persons could be maintained with their list of allergies, favourite ingredients and when the user decides to plan a meal or cook for them, then appropriate recipes would be suggested which fulfils the needs of the people being planned for. It also learns to suggest recipes based on previous selections.
Tech stack
Python (Django, scikit-learn ), Javascript(React), Spoonacular(recipe api), PostgreSQL(Database)
The process of building a menu planning application: What's on the Menu?
In the beginning, I started to build up the front-end using React to get a feel of how it would be presented to the user. Since I was working alone on it there was no need for creating wireframes. Once I formed an idea of how the application would look like, I started to create the back-end. The backed consisted of a users database which consisted of two tables i.e. users and cuisines. Different users with their allergies, favourite ingredients, favourite cuisine and age were stored in Persons table. The other table Recipes as the name suggests was to hold recipes i.e. name, image, ingredients, preparation steps etc.
When a user searches for a recipe, at first the recipe searches from the Recipes table, when matches aren't found, then a request was sent to he Spoonacular API for getting the recipes and stored locally in the database. Based on the searches, the parameters chosen by the user and the selected recipe was noted to be fed into a Machine learning algorithm which can then be used to suggest the order of the matched recipes by criteria like cuisine, ingredients, etc.
Challenges I faced
The challenges were cleaning up the results coming from the Spoonacular database, It was noticed that some recipes didn't have an image along with it, so those results had to be filtered out and in some, the steps of the recipes had to be organised. The training of the machine learning model was also tough as there wasn't real user data but I got some of my friends to use it and then got a set of data based on their usage patterns which could be used.
Key learnings
This application helped me to learn how to integrate Machine Learning inside Software Development. and gave me an application which I could use daily as I cook friends for my friends often and don't have to search for recipes for each of them explicitly. However, I would also like to integrate this in the future with more APIs to get a better selection of recipes. The Machine learning model should also be monitored to check its performance.