For over a decade, Ramki Subramanian has been a Software Engineer focused on architecting and developing big data systems across a number of industry verticals, from media to event management platforms. When he isn’t at a computer, he loves skiing and swimming.
WhatchaEat is an automatic recipe generator based on the items in your kitchen, your (fridge, freezer and cabinets. It is designed to help you save time spent on selecting foods for the day and reduces food waste by keeping track of expiring inventory.
During the COVID-19 pandemic, when our connection to the outside world was cut off, two major questions arose every day: a) What are we going to watch on Netflix? And b) What are we cooking for lunch and dinner? I wanted to tackle the latter.
For quite some time I wanted to keep track of my food inventory automatically by scanning my receipts to analyze my eating habits and spending habits. Also, keeping track of the expiration date for food items would help me to reduce waste.
There are many apps that do these separately, but I wanted to have a one-stop shop for both. What if the recipes were based on historical inventory data and automatically present me a few options to choose from for the day? WhatchaEat was born!
How Does It Work
I used an open-source dataset of 6,800 recipes as a base. I performed data cleaning, preprocessing and analysis, and wrote Python scripts to insert the unstructured data into a relational schema of PostgreSQL tables. Recipes are suggested based on personal dietary preferences, excluding recipes skipped in the past and not repeating the same menu two weeks in a row.
There is a recipe search with filters based on diet, course, cuisine, and recipe name.
I wanted to get out of my comfort zone with Django/RoR for the backend and try out backend as service solutions. Supabase fit the bill perfectly as it had automatic REST APIs, PostgreSQL database and authentication, and created custom or materialized views for complex queries. Below is a sample snippet for conditional chaining of recipe filters.
I wanted to work with Material UI and it was amazing to learn more about it and build my components based on its themes and styling.
I learned Scrapy during the initial data population, for when I wanted to download images and upload them to Cloudinary.
I am planning to add the following features and make this application even more useful:
- Store receipt scanning, OCR text detection and automatic inventory management
- Using charts for tracking purchase frequency
- Notifications to the user for expiring inventory
- Conversion to a progressive web app
- Introduce voice-based searches and Google assistant integration
- Using more analytics, such as the top 10 most versatile veggies
- Input data about food that perished and track wastage