recipe-recommender-v3
Code repo for NCSU class CSC510 25Spring Project 3
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
Repository
Code repo for NCSU class CSC510 25Spring Project 3
Basic Info
Statistics
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
- Releases: 1
Metadata Files
README.md
Saveur Sélection: Your AI-powered Recipe Recommender!
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.

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

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

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

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

So what are you waiting for? Go checkout Saveurs Sélection now!
Table of Contents
- Saveur Sélection: Your AI-powered Recipe Recommender!
- SE25/G12 new version is out!
- Short Videos for newly added features:
- What's new?
- So what are you waiting for? Go checkout Saveurs Sélection now!
- Table of Contents
- What is Recipe Recommender?
- Cook smarter, save time, and enjoy stress-free meal planning.
- Basic project Flow:
- Here are a few user interactions / case-studies to demonstrate how our system works:
- More source documentation can be found at: Recipe Recommender Docs
- API Documentation
- Technology Stack
- 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
- Execution Steps
- IDE and Code Formatter
- License
- How to Contribute
- Team Members
- Contributors for version 2.0
- Past Contributors:
- Project Mentors
- Cite this project
- Support - How to contact us when you hit rock-bottom?
- Facing other issues with the application?
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:
Here are a few user interactions / case-studies to demonstrate how our system works:
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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
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 installsetup for backend open terminal and navigate to the backend folder and execute the following:
npm install
## Execution Steps
- start backend server using:
npx nodemon - start frontend server using:
npm start Automatically a browser window opens
locahost:3000/.run
npm testfor 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:
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.
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
- Repositories: 1
- Profile: https://github.com/csc510g12
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
- actions/checkout v2 composite
- rytswd/respost v0.1.0 composite
- actions/checkout v2 composite
- actions/setup-node v3 composite
- peter-evans/close-issue v1 composite
- actions/checkout v2 composite
- actions/checkout v2 composite
- actions/setup-python v2 composite
- actions/first-interaction v1 composite
- actions/checkout v1 composite
- stefanoeb/jest-action 1.0.3 composite
- actions/stale v3 composite
- node 16 build
- node 16 build
- @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
- @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
- @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
- pandas *
- pytest *
- pytest-cov *
- python-telegram-bot *
- requests *
- 618 dependencies







