SE-Fall24-RZA / Recipe_Recommender

Saveurs Sélection - Recipe Recommender is an application that suggests you recipes based on the ingredients which are currently available. One of the most tedious tasks while cooking is figuring out what to cook with the ingredients that you, have rather than how to cook it. Our software aims to ease this dilemma by providing recipes.
MIT License
0 stars 2 forks source link

Enhanced Recipe Recommender: Introducing additional features and addressing issues for an improved user experience.



Watch how our application works:

Click here to watch - Youtube Video



Made With DOI GitHub issues open GitHub stars Github closes issues Build Status 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 Open Issues Closed Issues CI/CD License: MIT

What is Recipe Recommender?

Meet Recipe Recommender, your ultimate kitchen companion! Say goodbye to the dilemma of deciding what to cook with the ingredients on hand. We've revolutionized the cooking experience with an application that effortlessly suggests delicious recipes based on your kitchen inventory.

Unlock the full potential of your pantry and fridge as our innovative software guides you in selecting perfect dishes tailored to your current ingredients. Cooking is now an exciting adventure rather than a daunting task. Immerse yourself in a realm of limitless culinary possibilities with Recipe Recommender.

We've added numerous entertaining new features and fixes to enhance user-friendliness.

  1. Craving enchiladas but unsure how to cook Mexican food? Now, you can search for recipes by names! Just type in "enchiladas," choose a recipe based on its features, and enjoy.

  2. Imagine finding interesting recipes during your commute. With another new feature, you can save them on the go. We've also introduced dedicated user profiles. Sign up, log in, and save your favorite recipes under your profile in the "bookmarks" section. When you're ready to cook, everything will be waiting for you.

  3. That's not all! We've removed non-functional buttons, technically known as "refactoring the system."

  4. Your profile, information, and favorite recipes now have a dedicated space. Secure logins and logouts ensure no duplicate entries or exposed credentials, making the system more secure.


More about our new additions in our next section!

Feature additions: Enhancements, Upgrades and BugFixes:

Presenting our latest additions: Here's a comprehensive list of all our new features, enhancements, and upgrades!

  1. User Profile: In our application, users can now establish a profile with a unique username and password, allowing seamless login and logout. This facilitates personalized experiences and customized access to preferences and activities. Further details will be discussed in the following points. Your profile, information, and preferred recipes now inhabit a designated area, simplifying the management of all your belongings in one organized space.
  2. Bookmarks: Picture this scenario: You're commuting, scrolling through intriguing recipes in our app. Thanks to a cutting-edge feature, you can now save them instantly. The introduction of dedicated user profiles elevates your experience. Simply sign up, log in, and curate your favorite recipes in the "bookmarks" section under your profile. When the time comes to cook, everything awaits you – seamlessly organized and easily accessible.
  3. Search for recipes by name: Previously limited to ingredient-based searches only, our system now boasts an exciting upgrade. You can now search for recipes by name! Ever craved enchiladas without knowing the recipe? Simply input "enchiladas," peruse based on features, and relish the culinary journey.
  4. Refactoring the UI: We've eliminated inactive buttons and links, employing a technical process termed "system refactoring" to enhance functionality and optimize the user interface.
  5. System security upgrade: We observed some passwords present in the codebase, which is a major security threat. We have ensured to removed this and move it to the DB. Additionally, we have implemented secure logins and logouts ensuring the prevention of duplicate entries and safeguards credentials, fortifying the overall security of the system.
  6. The requirements.txt file has been updated to ensure forward compatibility by specifying package versions greater than or equal to the ones explicitly mentioned. This modification allows for the installation of packages with versions that meet or exceed the specified ones, thus accommodating future updates and maintaining compatibility with evolving dependencies.

Documentation and Project Flow:



  1. User Registration: Establish a unique username and password; no duplicate usernames allowed, ensuring password confidentiality.
  2. User Authentication: Log in using the correct username and password for secure access.
  3. Search Recipes by Ingredients: Input your available ingredients to discover relevant recipes based on ingredient names.
  4. Search Recipes by Dish Name: Locate recipes by specifying the dish name in the search.
  5. Add a Recipe: Share details such as ingredients, dish name, time, cuisine, instructions, and optional images to contribute your recipe.
  6. Bookmark Favorite Recipes: Save preferred recipes for easy access.
  7. View Bookmarked Recipes in User Profile: Access and review all saved recipes conveniently stored under your user profile.
  8. Logout: Securely log out to protect your profile information and activities.

Source documentation can be found at: Recipe Recommender Docs

API Documentation

Get Recipes: Retrieve a list of recipes based on specified filters like ingredients, cuisine, and page parameters. Success returns a code of 200 with the recipe list; error returns code 500 with an error message.

Get Recipe Cuisines: Fetches available cuisines, responding with a code of 200 and an array of cuisine strings on success. In case of an error, it returns a code of 500 with an error message.

Add Recipe: Allows users to add a new recipe via the /addRecipe endpoint, responding with a code of 200 and the inserted recipe's ID on success. In case of an error, it returns a code of 500 with an error message.

Get Ingredients: Retrieves a list of distinct ingredients through the /callIngredients endpoint. Success returns a code of 200 with an array of ingredient strings; error returns code 500 with an error message.

User Signup: Enables user registration at the /signup endpoint. Success returns a code of 200 with a success indicator; error returns code 500 with an error message.

User Login: Authenticates a user via the /login endpoint, returning a code of 200 with a success indicator and user object on success. In case of an error, it returns a code of 500 with an error message.

Get Bookmarks: Retrieves bookmarked recipes for a user through the /getBookmarks endpoint. Success returns a code of 200 with an array of bookmarked recipes; error returns code 500 with an error message.

Add Recipe to User Profile: Adds a recipe to a user's profile bookmarks via the /addRecipeToProfile endpoint. Success returns a code of 200 with the count of modified items; error returns code 500 with an error message.


Detailed documentation can be found at: API 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:

Installation:

Check out our comprehensive YouTube video demonstrating each step for easy guidance. Project Setup

  1. start backend server using:
    npx nodemon
  2. start frontend server using:
    npm start
  3. Automatically a browser window is opened which shows frontend.
  4. run npm test for running the tests [Dependencies: Jest, Chai, Supertest]

Release Made in this cycle

  1. Major release 3.1 - Major release to add search by recipe, user registration, user login and bookmarks.
  2. Hotfix Release 3.1.2 - Minor version release to add test case for login
  3. Major Release 3.2 - Major release- Included test cases addition, user registration, minor bug fixes and documentation updates
    Read our detailed release notes

IDE and Code Formatter

:page_facing_up: License

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

:pencil2: Contributions

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

FUTURE SCOPE

Implement personalized diertary requirements based filtering.

Meal planning- saving data for all meals of the day.

Voice to text integration.

Chatbot integration- to answer quick queries about the recipe.

Team Members

Annadurai,Harshitha
Bhoja Ramamanohara,Pannaga Rao
Masineni Prasanna Kumar,Karthik
Niranjana,Prathima Putreddy

Troubleshooting and Support

Common issues observed and solutions:

  1. requirements.txt failing: this issue should no longer be seen, as we have used ~= to ensure your systems pick up versions compatible with the other packages. However, if you happen to see the issue, modify the requirements.txt file to use a more recent version.
  2. python was not found: we recommend using python3 as some of the modules are available only on Python3. You may either install Python3 or setup a virtual environment(we suggest the latter if you are currently running other applications on python2) Facing other issues with the application? Mail us - teamsoftwareeng7@gmail.com

Made with ❤️ on GitHub.