Foodinator - A Food Recommendation System

This is a food recommendation system that recommends food based on the user's preferences. The system uses a K-Means clustering algorithm to cluster similar foods together and recommend foods based on the user's preferences.

It also supports direct food recommendation based on the user's food preferences by using cosine similarity.

This project was developed as part of the Technical Project Round for JTP (Japan Third Party).

Introduction

One of the most challenging tasks for people is deciding what to eat. With so many food options available, it can be overwhelming to choose the right food that meets your preferences, allergens, and nutritional requirements. To address this issue, we have developed a food recommendation system called Foodinator.

Overview

Data Collection and Preprocessing

The dataset used in the system has been created from scratch by using the Spoonacular API to fetch food items, their types, allergens, and nutritional information. The dataset has been cleaned and preprocessed to remove any missing values and outliers.

Machine Learning Algorithms

I have used various machine learning algorithms, such as K-Means clustering, Nearest Neighbors, Support Vector Machines, K-Nearest Neighbors and a Neural Network to cluster similar foods together and recommend foods based on the user's preferences. The K-Means clustering algorithm has been found to perform the best in terms of accuracy and efficiency.

Features

  • Feature 1: Recommends food based on the user's preferences.
  • Feature 2: Provides detailed information about the recommended food items.
  • Feature 3: Takes into account the user's allergens and nutritional requirements.
  • Feature 4: Supports direct search functionality for food recommendation based on the user's food preferences.

Technologies Used

The system has been developed using the FastAPI framework for the backend and React for the frontend. The system uses MongoDB as the database to store the food items and user preferences. The system has been containerized using Docker to ensure easy deployment and scalability.

Backend

   

Frontend

           

Database

MongoDB

Containerization

Docker

API Documentation

The API documentation can be accessed by going to http://localhost:8000/docs.