Skip to content

csc510fall23g45/cheapBuy

Β 
Β 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

498 Commits
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

CHEAPBUY

DOI Github codecov Running Code Coverage Python Style Checker Run Tests On Push Lint Python cheapBuy license cheapBuy issues cheapBuy issues closed cheapBuy pull-requests

Report Bug Β· Request Feature

Table of Contents

πŸ“– Introduction

CheapBuy is a user-friendly website that simplifies online shopping with an improved interface. It offers convenient price comparisons for the same product across various websites, including popular ones like Amazon, Walmart, eBay, BJ's, Costco, and more. With user accounts, personalized wishlists, and the ability to filter and select multiple websites at once, cheapBuy provides a seamless shopping experience. This streamlined process not only saves you time and money but also offers the convenience of personalized wishlists and account features, making cheapBuy your go-to solution for finding the bestΒ dealsΒ online.

πŸ’« Features

User Accounts

Enhanced UI

Personal wishlists

Filter option for searching

πŸ› οΈ Steps for Execution

  1. Clone the GitHub Repository:

    • Clone the GitHub repository to your preferred location on your system. Ensure that Git is preinstalled.
      git clone https://github.com/csc510fall23g45/cheapBuy.git
      cd cheapBuy
  2. Install Python and Pip:

    • This project uses Python 3. Make sure Python and Pip are preinstalled on your system. If not, download and install them:
  3. Install Project Dependencies:

    • Install the project dependencies listed in the requirements.txt file using the following command:
      pip install -r requirements.txt
  4. Generate ScrapeOps API Key:

    • Visit ScrapeOps website, sign in to your account, and navigate to the API Keys section. Create a new API key in the ScrapeOps dashboard nd verify your email address to start scraping using the api-key.

Running

Set Environment Variable for Windows PowerShell:

$Env:SCRAPEOPS_API_KEY = "your_api_key_here"

Set Environment Variable for macOS and Linux:

export SCRAPEOPS_API_KEY="your_api_key_here"

Set Environment Variable for Windows Command Prompt:

set SCRAPEOPS_API_KEY=your_api_key_here

Replace "your_api_key_here" with the actual API key you obtained from ScrapeOps. This key will be used for making requests to the ScrapeOps API within the project.

Run Flask Application:

  • Execute the following command to run the Flask application:
python app.py
  • Navigate to the provided link (usually http://127.0.0.1:5000/) in your web browser to use cheapBuy.

πŸ“… Plan of Action

PHASE-1βœ…

  1. Fetching descirption of the user's current tab for ebay.
  2. Fetching descirption of the user's current tab for Walmart.
  3. Fetching descirption of the user's current tab for amazon.
  4. Fetching descirption of the user's current tab for Bjs.
  5. Fetching descirption of the user's current tab for Costco.
  6. Web Scrapping various product details from Amazon.
  7. Web Scrapping various product details from Ebay.
  8. Exception handling of web scrapping.
  9. Server API for web scrapping.
  10. Deploying server on AWS.
  11. Build an extension for this price comparison.
  12. Extract knowledge like prices, sites, URL, comparison, description from scrapped data.
  13. Show all the scrapped data and the knowledge gained on the extension page.

PHASE-2 βœ…

  1. Develop a website instead of extension.
  2. Improvement of extension UI.
  3. Highlight the cheapest option available.
  4. Code restructuring.
  5. Improve accuracy of the product. Example : If user's current tab is having Television of a particular brand and there is a better option available at a cheaper or comparable rate than provide alternative product accordingly.
  6. Web Scrapping various product details from Walmart.
  7. Web Scrapping various product details from Costco.
  8. Web Scrapping various product details from BJs.
  9. Improve code execution speed using multithreading.

PHASE-3 βœ…

  1. Fetching descirption of the user's current tab for Bestbuy.
  2. Fetching descirption of the user's current tab for Trader Joes.
  3. Fetching descirption of the user's current tab for Kroger.
  4. Web Scrapping various product details from Bestbuy.
  5. Web Scrapping various product details from Trader Joes.
  6. Web Scrapping various product details from Kroger.
  7. Improve code execution speed using multiprocessing.
  8. Improve website UI.
  9. Add a sidebar.
  10. Users can choose the selected website and price range.
  11. Improve the accuracy of searching products.
  12. Link buttons for all websites.

PHASE-4 βœ…

  1. Showing the cheapest product from every website (previously they were giving the first product and not the least cost one).
  2. Remove the product link and use the product name or description to search.
  3. Fix proxy issues in web scraping of all websites.
  4. Increase the speed of execution of single site selection.
  5. Remove the Chrome Driver from web-scrapers to decrease the latency.
  6. Optimise the results fetching time.
  7. Remove price range as we are looking for the cheapest product across a website or on a website.
  8. Enhance the user interface, and keep only relevant images and content.
  9. Reduce the time complexity and latency for the product search by removing inner loops.

PHASE-5 βœ…

  1. Implemented a new functionality that allows users to effortlessly set up new accounts.
  2. Implemented a new wishlist feature that empowers users to personalize and seamlessly save their desired products.
  3. Updated the front-end framework to Flask to improve the page hosting.
  4. Enhanced the user interface.
  5. Added option for users to select one or more websites for selected searching.
  6. Improved Test case code coverage from 27% to 67%.
  7. Secured the ScrapeOps API key using environment variables.
  8. Fixed web scraper issues for BJs, Costco and eBay.

FUTURE PHASE βŒ›

  1. Creating ordering and payment functionality for customers to directly order from Website.
  2. Email notification of the available coupon to the user.
  3. Adding more filter options.
  4. Creating multiple wishlists.
  5. Decrease the load time.
  6. Storing the data more securly.
  7. Add more websites for web scrapping like Target, Kroger, and Traderjoes.

🌟 You are all set! 🌟

Video

CSC 510 - Project 3 - Project Demo

πŸ“ License

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

🍰 Contributing

Please contribute using GitHub Flow. Create a branch, add commits, and open a pull request.

Please read CONTRIBUTING for details on our CODE OF CONDUCT, and the process for submitting pull requests to us.

Project 3 Rubric

Click here for project 3 rubric

πŸ‘₯ Team Members


Sai Raj

Nitya


Anish


Mahathi

Name Unity ID
Sai Raj Thirumalai sthirum4
Nitya Naga Sai Atluri natluri
Anish Rao Toorpu atoorpu
Mahathi Kolishetty mkolish

More documentation

Chat Channel

πŸ“§ Support

To Subscribe and for any help, please reach out to us at: sefall2023project45@gmail.com

πŸ™ Acknowledgements

We would like to thank Professor Dr Timothy Menzies for helping us understand the process of building a good Software Engineering project. We would also like to thank the teaching assistants San Gilson, Andre Lustosa, Xueqi (Sherry) Yang, Yasitha Rajapaksha, and Rahul Yedida for their support throughout the project. We would also like to extend our gratitude to the previous group : [https://github.com/EZ7051/cheapBuy]


About

cheapBuy Extension provides you ease to buy any product through your favourite website's like Amazon, Walmart, Ebay, Bjs, Costco, etc, by providing prices of the same product from all different websites to extension.

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • Python 61.2%
  • HTML 37.4%
  • Other 1.4%