DFY-NCSU / slash-phase6

Slash is a web application that scrapes the most popular e-commerce websites for the best deals so that you can get the best value for your money!
MIT License
3 stars 4 forks source link

DOI

GitHub Release Flake8 Lint Syntax Check Python Style Checker Python Application codecov

GitHub license GitHub forks GitHub stars GitHub issues GitHub closed issues GitHub pull requests GitHub closed pull requests GitHub discussion channel

Report Bug · Request Feature

Do you love shopping? Are you in search of some good deals while shopping online?! Slash is here to help you look for the best deals!

Tired of searching multiple websites for the best deals? Slash is here to make your online shopping experience smarter and faster! Slash is a web API framework that automatically scrapes top e-commerce sites—Walmart, Target, BestBuy, Costco, and EBay—to find and compare the best deals, saving you time and money. Whether you're a student on a budget or a data analyst building real-time datasets, Slash is the tool for you.


Checkout our video :: Installation :: Technology Used :: Use Case :: Why :: Future Roadmap :: Contributors :: Acknowledgement :: Support


:movie_camera: Checkout our video

bilibili


:rocket: Installation

  1. Clone the Github repository to a desired location on your computer. You will need git to be preinstalled on your machine. Once the repository is cloned, you will then cd into the local repository.
    git clone https://github.com/DFY-NCSU/slash-phase6.git
    cd slash-phase6
  2. This project uses Python 3, so make sure that Python and Pip are preinstalled. All requirements of the project are listed in the requirements.txt file. Use pip to install all of those.
    pip3 install -r requirements.txt
  3. To run this project, you must install PostgreSQL on your system. If you haven't already installed it, you can download the latest version of PostgreSQL from the official website: PostgreSQL Downloads.

Configuring Database Connection

Once you've installed PostgreSQL, follow these steps to set up the database connection in your project:

i. Open the database.py file in your project directory.

ii. Locate the top section of the code where you define the database connection settings. It might look something like this:

   username = 'postgres'
   password = 'pass'

Replace username and password value from 'postgres', 'pass' with your PostgreSQL username password, respectively.

  1. Once all the requirements are installed, you will have to enter the src folder. Once in the src folder, use the python command to run the main.py file.
    
    cd src

For Mac python3 main.py

For Windows python main.py

5. While the above is running, go to new terminal and run streamlit application. Firstly go back to the root directory and run the following command:

cd ..

For Mac python3 -m streamlit run slash_user_interface.py

For Windows streamlit run slash_user_interface.py



:computer: Technology Used
---
- [Streamlit](https://streamlit.io/)
- [Fast API](https://fastapi.tiangolo.com)
- [Postgre SQL](https://www.postgresql.org)
- [Python](https://www.python.org)

:bulb: Use Case
---
* ***Students***: Students coming to university are generally on a budget and time constraint and generally spend hours wasting time to search for products on Websites. Slash is the perfect tool for these students that slashes all the unnecessary details on a website and helps them get prices for a product across multiple websites.Make the most of this tool in the upcoming Black Friday Sale.
* ***Data Analysts***: Finding data for any project is one of the most tedious job for a data analyst, and the datasets found might not be the most recent one. Using slash, they can create their own dataset in real time and format it as per their needs so that they can focus on what is actually important.

:page_facing_up: Why
---
- In a market where we are spoilt for choices, we often look for the best deals.  
- The ubiquity of internet access has leveled the retail playing field, making it easy for individuals and businesses to sell products without geographic limitation. In 2020, U.S. e-commerce sales, receiving a boost due to the COVID-19 pandemic, grew 44% and represented more than 21% of total retail sales, according to e-commerce information source Internet Retailer.
- The growth of e-commerce has not only changed the way customers shop, but also their expectations of how brands approach customer service, personalize communications, and provide customers choices.
- E-commerce market has prompted cut throat competition amongst dealers, which is discernable through the price patterns for products of major market players. Price cuts are somewhat of a norm now and getting the best deal for your money can sometimes be a hassle (even while online shopping).
- This is what Slash aims to reduce by giving you an easy to use, all in one place solution for finding the best deals for your products that major market dealers have to offer!
- Slash in its current form is for students who wish to get the best deals out of every e-commerce site and can be used by anyone who is willing to develop an application that consumes these web APIs.
- Future scope includes anything from a web application with a frontend or any Android or IOS application that utilises these Web APIs at their backend. Anyone can build their own custom application on top of these web APIs.

:golf: Phase 6 developments
---
1. **Expanded Platform Coverage with Costco Integration**
   - **Description**: The project now supports Costco, in addition to previously integrated platforms like Walmart and Target, offering users a broader selection of products and prices.
   - **Functionality**: Users can access pricing and product information from Costco alongside other platforms, ensuring a more comprehensive shopping experience.

2. **Improved Filtering and Sorting Capabilities**
   - **Description**: Logical bugs in the sorting function have been corrected, and new filtering options allow users to easily narrow down searches by price.
   - **Functionality**: Users can refine searches with advanced sorting and filtering features, enabling more precise price-based sorting and facilitating better deal discovery.

3. **Reliable and Refined Scraper Performance**
   - **Description**: Bug fixes have been implemented to address previous issues with scrapers, ensuring consistent and accurate retrieval of price information.
   - **Functionality**: Scrapers now reliably gather up-to-date pricing from multiple e-commerce sites, providing users with accurate and timely data.

4. **Advanced Price Sorting and Enhanced User Interface**
   - **Description**: The frontend has been redesigned to improve user experience with intuitive navigation, highlighted deals, and a clear wishlist display.
   - **Functionality**: Users enjoy a visually appealing interface with improved navigation, deal highlights, and an organized wishlist, making the application smoother and more enjoyable to use.

<img src = https://github.com/DFY-NCSU/slash-phase6/blob/main/media/exp1.png>
<img src = https://github.com/DFY-NCSU/slash-phase6/blob/main/media/exp2.png>
<img src = https://github.com/DFY-NCSU/slash-phase6/blob/main/media/exp3.png>

:golf: Future Roadmap
---
- Advanced Search Capabilities: We will enhance the current search functionality by adding more advanced filters such as product ratings, seller ratings, availability, and shipping time, giving users more refined control over search results, improving user satisfaction.
- Predictive Price Model: We plan to implement a machine learning-based predictive model that advises users on the optimal time to make purchases, based on historical price trends and forecasting.
- Pagination for Search Results: A pagination                  system to improve the display of search results,          particularly for large datasets is in progress.
- Social Media Login and Sharing: We plan to allow users to log in using social media accounts (e.g., Google, Facebook) and share their wishlists or best deals directly with friends via social platforms.
- Price Chart Visualization: We are going to introduce dynamic visualizations of price trends for products, allowing users to track price changes over time in a graphical format.

:sparkles: Contributors && Contribution
---

1. Sen Fang (sfang9@ncsu.edu)
   - API refactoring for Walmart, Ebay, Target.
   - New shopping platform supporting - Costco.
   - Test wrting for Walmart, Ebay, and Costco.
   - Demo video building.
   - Form infilling.
   - Regression testing.
   - Real-world testing.
   - Support workflow (minor).
2. Weiyuan Ding (wding8@ncsu.edu)
   - API refactoring for BestBuy.
   - Test writing for BestBuy.
   - Support cross-platforms testing.
   - Feature testing.
   - Support workflow (major).
   - Code clean for format.
   - Poster building.
   - Form infilling.
   - Regression testing.
   - Real-world testing.
3. Xiaoran Yang (xyang49@ncsu.edu)
   - Test writing for Target.
   - Documentation wrting.
   - 2-mins video building.

## 🙏 Acknowledgements <a name="Acknowledgement"></a>
<!-- We would like to thank Professor Dr Timothy Menzies for helping us understand the process of Maintaining a good Software Engineering project. We would also like to thank the teaching assistants for their support throughout the project. -->
We would like to thank the teaching assistants for their support throughout the project.
Some code in our project is modified from this [repo](https://github.com/MeryHarikaG/slash-phase5).

:email: Support
---
For any queries and help, please reach out to us at: thefatblue@gmail.com