recipe-recommender-v3

Code repo for NCSU class CSC510 25Spring Project 3

https://github.com/csc510g12/recipe-recommender-v3

Science Score: 67.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
    Found CITATION.cff file
  • codemeta.json file
    Found codemeta.json file
  • .zenodo.json file
    Found .zenodo.json file
  • DOI references
    Found 5 DOI reference(s) in README
  • Academic publication links
    Links to: zenodo.org
  • Academic email domains
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (11.1%) to scientific vocabulary
Last synced: 10 months ago · JSON representation ·

Repository

Code repo for NCSU class CSC510 25Spring Project 3

Basic Info
  • Host: GitHub
  • Owner: csc510g12
  • License: mit
  • Language: JavaScript
  • Default Branch: main
  • Homepage:
  • Size: 72.6 MB
Statistics
  • Stars: 0
  • Watchers: 1
  • Forks: 0
  • Open Issues: 0
  • Releases: 1
Created over 1 year ago · Last pushed about 1 year ago
Metadata Files
Readme Contributing License Code of conduct Citation

README.md

Saveur Sélection: Your AI-powered Recipe Recommender!

Made With DOI GitHub issues open Github closed issues GitHub stars codecov code style: prettier Respost - Write comment to new Issue event GitHub contributors Code Formatter and Syntax Check Running Code Coverage GitHub code size in bytes License: MIT

SE25/G12 new version is out!

Demo Video for newly added features:

What's new?

📍Social Media Posts: Share your ideas and cooking experiences with community.

Social Media Posts

🎨 Dark Theme: Reading at night, without hurting eyes.

Dark Theme

🎙️ Voice Instruction and Big Screen Mode: Cooking made easy with voice instructions and big screen mode.

alt text

📜 Markdown Support for Cooking Instruction: Format rich format for cooking instruction.

Markdown Support for Cooking Instruction

👩‍🍳 AI-Powered Recipe Generation Accessable from Telegram: Generate recipes based on your available ingredients, dietary preferences, and cooking style.

alt text

So what are you waiting for? Go checkout Saveurs Sélection now!

Table of Contents

What is Recipe Recommender?

Introducing Saveurs Sélection—the smart solution to your cooking dilemmas! If you have ever struggled to decide what to cook then this application is just for you! Saveurs Sélection suggests recipes based on the ingredients you already have. Our AI Chef Gemini provides smart substitutions, so you're never out of options. Need a fully customized dish? Generate complete recipes just for you. Plus, our auto-generated grocery list simplifies shopping for any recipe you wish to cook. It is our mission to enable our users to -

Cook smarter, save time, and enjoy stress-free meal planning.

With SSO Sign-In, logging in has never been easier or more secure—now you can access your account via social media or email with just a click. Our AI-Powered Recipe Suggestions take personalization to a new level, recommending dishes that fit your tastes and ingredients seamlessly. To make exploring recipes even more intuitive, we’ve introduced Chef Gemini! - an AI Chef that offers tailored options to help you find exactly what you’re craving. And, with an Enhanced UI and Bug Fixes, browsing and saving recipes is smoother than ever.

Basic project Flow:

Project Flow Gif

Here are a few user interactions / case-studies to demonstrate how our system works:

  1. User Registration and Authentication: Users can create an account using an email and password combination or sign in through supported social media platforms such as Google or Facebook. The authentication process ensures secure access to user data while managing sessions effectively. Upon successful login, users gain access to personalized features, including bookmarked recipes, AI-powered recommendations, and profile-based preferences.

User Registration Screen

  1. Smart Recipe Search: Users can search for recipes in multiple ways. By entering a list of available ingredients, the system filters and returns relevant recipes that match the provided inputs. Alternatively, users can locate specific recipes by searching with a dish name. If no exact matches are found, Chef Gemini, the AI-powered assistant, can generate a new recipe based on the user's ingredients, dietary preferences, and cooking style, ensuring that users always have an option to cook with what they have on hand.

Recipe search screen
Recipe generate screen

  1. Add a Recipe: Users can contribute new recipes to the system by providing details such as the dish name, a list of ingredients, preparation time, cuisine type, and step-by-step instructions. Additionally, they have the option to upload an image to accompany the recipe. Once submitted, the recipe is stored in the database, making it available for search and discovery within the system.

Add a new recipe screen

  1. AI-Powered Recipe Customization: For existing recipes, users have the ability to request ingredient substitutions tailored to specific needs. Chef Gemini can modify recipes based on dietary restrictions such as gluten-free, vegan, or lactose-intolerant options. Additionally, users focused on health and fitness can request modifications to align with specific goals such as high-protein, low-carb, or keto-friendly diets. If certain ingredients are unavailable, the system provides suitable alternatives, ensuring that users can still prepare the dish with accessible substitutions.

Ask Chef Gemini Modal
Chef Gemini Response screen

  1. Bookmark Recipes: Users can save recipes for future reference by bookmarking them. All bookmarked recipes are stored within the user’s profile, allowing for quick and easy access without requiring repeated searches.

Bookmark Recipes Screen

  1. User Profile & Grocery List Generation: The user profile serves as a central hub for managing all bookmarked recipes, enabling users to review and access saved content at any time. Additionally, users can generate a grocery list based on any bookmarked recipe. The system compiles a structured shopping list by extracting the required ingredients, ensuring a seamless transition from meal planning to grocery shopping.

Grocery List screen

  1. Secure Logout: Users can securely log out of their accounts, terminating the active session and redirecting them to the landing page. Future access will require re-authentication, maintaining security and ensuring that user data remains protected.

More source documentation can be found at: Recipe Recommender Docs

API Documentation

All APIs are present in the folder Code/backend/api. These APIs handle user authentication, recipe management, bookmarking, and AI-powered recipe generation and recommendations.

apiOAuthLogin This endpoint processes OAuth-based login requests. It checks if the provided email already exists in the database and, if not, creates a new user with a default password. The response indicates whether the user was successfully created or if the email is already registered.

apiAuthLogin This endpoint handles authentication using a username and password provided as query parameters. It searches the database for a matching user and returns a success status along with user details if authentication is successful.

apiAuthSignup This endpoint allows new users to sign up by providing a username and password in the request body. It creates a new user in the database and returns a success flag along with user details upon completion.

apiGetBookmarks This endpoint retrieves the list of bookmarked recipe IDs for a given username provided as a query parameter. If the username is missing, an error message is returned. The response contains an array of bookmarked recipes.

apiGetBookmarkedRecipes This endpoint returns detailed information about all recipes a user has bookmarked. The username must be provided as a query parameter. The response contains a list of complete recipe details, including ingredients and instructions.

apiPostRecipeToProfile This endpoint allows users to add a specific recipe to their profile. The request body must include the username and the recipe object. The response confirms whether the recipe was successfully added to the user’s profile.

apiRemoveRecipeFromProfile This endpoint removes a specified recipe from a user’s profile. The request body must include the username and the recipe object. The response confirms whether the removal was successful.

apiGetRecipeByName This endpoint allows users to search for recipes by name using a query parameter. The response includes a list of recipes matching the search criteria, along with their details.

apiGetRecipes This endpoint retrieves recipes based on filters such as ingredients, cuisine type, cooking time, dietary restrictions, and user preferences. The response contains a paginated list of recipes that match the filters along with metadata about the number of results.

apiGetRecipeCuisines This endpoint returns a list of all available cuisines stored in the database. The response is an array of cuisine names that can be used for filtering recipes.

apiPostRecipe This endpoint allows users to submit a new recipe to the system. The request body must contain structured recipe details such as name, ingredients, and instructions. The response confirms whether the recipe was successfully added.

apiGetIngredients This endpoint retrieves a list of all ingredients available in the system. It responds with an array of ingredient names that users can use when searching for recipes.

apiGenerateRecipe This endpoint generates a complete recipe using AI based on user-provided ingredients, cuisine preferences, maximum cooking time, and dietary restrictions. The AI model returns a structured JSON response containing the recipe name, description, ingredients, and step-by-step instructions.

apiAiChef This endpoint provides AI-powered recipe recommendations and ingredient substitution suggestions. The request body must include recipe details and a user query. The AI model processes the information and returns personalized cooking recommendations or ingredient substitutions based on the given constraints.

apiGetGroceryList This endpoint retrieves a structured grocery list based on the recipes a user has bookmarked. The request requires a username as a query parameter, and the response includes a categorized list of ingredients needed to prepare the selected recipes.

A more comprehensive API documentation can be found at: Recipe Recommender Docs

Technology Stack

NodeJS React Express.js NPM JEST MongoDB HTML CSS


Detailed documentation can be found at: TechStack Docs

Key Software Requirements

Project Setup Steps:

Check out INSTALL.md for detailed instruction on how to setup the entire project with MongoDB atlas and AWS EC2.

Quick Start Guide

  • clone repository using sh git clone <repo_name>

  • setup for frontend open terminal and navigate to the frontend folder and execute the following: npm install

  • setup for backend open terminal and navigate to the backend folder and execute the following:

npm install

## Execution Steps

  1. start backend server using: npx nodemon
  2. start frontend server using: npm start
  3. Automatically a browser window opens locahost:3000/.

  4. run npm test for running the tests [Dependencies: Jest, Chai, Supertest]

IDE and Code Formatter

License

This project is licensed under the terms of the MIT license. Please check License for more details.

How to Contribute

Please see our CONTRIBUTING.md for instructions on how to contribute to the project by completing some of the issues.

Team Members

This project is a collaborative effort by a dedicated team of developers and mentors, working together to enhance and refine its features over multiple iterations. We appreciate the contributions of both current and past members who have played a vital role in shaping this project.

Contributors for version 3.0

Past Contributors:

  • Ayush Gala
  • Keyur Gondhalekar
  • Ayush Pathak
  • Mullamuri, Venkata Yaswanth
  • Gupta, Ayush
  • Baddi, Yaswanth
  • etc.

Project Mentors

Dr. Timothy Menzies
Mrs. Katerina Vilkomir

Cite this project

If you use this project in your research or applications, please cite it as follows:

yaml cff-version: 1.2.0 message: "If you use this software, please cite it as below." authors: - family-names: "Gala" given-names: "Ayush" - family-names: "Pathak" given-names: "Ayush" - family-names: "Gondhalekar" given-names: "Keyur" title: "Saveurs Sélection" version: 2.0.0 doi: 10.5281/zenodo.15212649 date-released: 2025-04-14 url: "https://doi.org/10.5281/zenodo.15212649"

Alternatively, you can find the citation on Zenodo.

Support - How to contact us when you hit rock-bottom?

Common issues observed and solutions:

  1. Sometimes there would be vulnerabilities found in the backend, so fix it by running 'npm install nodemon --save-dev', because npm audit fix --force won't fix it.

  2. The Auth0 login may occasionally experience callback errors if specific URLs aren’t specified on the application page. If you encounter this issue, ensure you add the hosting address to the allowed callback URLs

Facing other issues with the application?

Email the coordinator - Recipe-Recommender-Help@550w.host

Made with ❤️ on GitHub.

Owner

  • Name: CSC510 Group 12 NCSU 25Spring
  • Login: csc510g12
  • Kind: organization

Citation (CITATION.md)

cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
  - family-names: "Gala"
    given-names: "Ayush"
  - family-names: "Pathak"
    given-names: "Ayush"
  - family-names: "Gondhalekar"
    given-names: "Keyur"
title: "Saveurs Sélection"
version: 2.0.0
doi: 10.5281/zenodo.14226806
date-released: 2023-10-19
url: "https://zenodo.org/doi/10.5281/zenodo.14226806"

GitHub Events

Total
  • Push event: 3
Last Year
  • Push event: 3

Dependencies

.github/workflows/Code_Formatter_and_Syntax_Check.yml actions
  • actions/checkout v2 composite
.github/workflows/Respost.yml actions
  • rytswd/respost v0.1.0 composite
.github/workflows/Style_Checker_and_Prettify_Code.yml actions
  • actions/checkout v2 composite
  • actions/setup-node v3 composite
.github/workflows/close_as_a_feature.yml actions
  • peter-evans/close-issue v1 composite
.github/workflows/codeFormatter.yml actions
  • actions/checkout v2 composite
.github/workflows/coverage.yml actions
  • actions/checkout v2 composite
  • actions/setup-python v2 composite
.github/workflows/greetings.yml actions
  • actions/first-interaction v1 composite
.github/workflows/main.yml actions
  • actions/checkout v1 composite
  • stefanoeb/jest-action 1.0.3 composite
.github/workflows/stale.yml actions
  • actions/stale v3 composite
Code/backend/Dockerfile docker
  • node 16 build
Code/docker-compose.yml docker
Code/frontend/Dockerfile docker
  • node 16 build
Code/backend/package.json npm
  • @testing-library/jest-dom ^6.6.3 development
  • @testing-library/react ^16.2.0 development
  • @testing-library/user-event ^14.6.1 development
  • axios ^1.8.0 development
  • babel-eslint ^10.1.0 development
  • babel-jest ^29.7.0 development
  • eslint ^7.32.0 development
  • eslint-plugin-react ^7.26.1 development
  • identity-obj-proxy ^3.0.0 development
  • jest ^27.5.1 development
  • jest-mock ^29.7.0 development
  • nodemon ^3.1.7 development
  • prettier ^2.4.1 development
  • supertest ^6.1.6 development
  • @google/generative-ai ^0.22.0
  • axios ^1.7.7
  • chai ^4.3.4
  • cors ^2.8.5
  • csv-parser ^3.0.0
  • dotenv ^10.0.0
  • express ^4.17.1
  • mongodb ^4.17.2
  • nodemailer ^6.7.0
  • util ^0.12.5
Code/frontend/package.json npm
  • @testing-library/jest-dom ^6.6.3 development
  • @testing-library/react ^16.2.0 development
  • @testing-library/user-event ^14.6.1 development
  • babel-jest ^29.7.0 development
  • identity-obj-proxy ^3.0.0 development
  • jest ^27.5.1 development
  • @auth0/auth0-react ^2.2.4
  • @chakra-ui/icons ^2.2.4
  • @chakra-ui/react ^2.10.3
  • @emotion/react ^11.11.1
  • @emotion/styled ^11.11.0
  • @google/generative-ai ^0.22.0
  • axios ^1.7.7
  • bootstrap ^5.1.1
  • framer-motion ^10.16.4
  • lucide-react ^0.454.0
  • react ^18.2.0
  • react-bootstrap-validation ^0.1.11
  • react-dom ^18.2.0
  • react-icons ^5.5.0
  • react-markdown ^10.0.0
  • react-scripts ^5.0.1
  • web-vitals ^1.1.2
package.json npm
  • @babel/core ^7.26.9 development
  • @babel/preset-env ^7.26.9 development
  • @babel/preset-react ^7.26.3 development
  • axios ^1.8.0 development
  • babel-jest ^29.7.0 development
  • identity-obj-proxy ^3.0.0 development
  • jest ^29.7.0 development
  • jest-environment-jsdom ^29.7.0 development
  • jest-mock ^29.7.0 development
  • @auth0/auth0-react ^2.2.4
  • @chakra-ui/icons ^2.2.4
  • lucide-react ^0.460.0
  • util ^0.12.5
requirements.txt pypi
  • pandas *
  • pytest *
  • pytest-cov *
  • python-telegram-bot *
  • requests *
package-lock.json npm
  • 618 dependencies