Skip to content

tarekshalaby/the-angry-shopper

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Scraping Cairo's supermarkets to compare prices and track changes.

The Angry Shopper logo

The Angry Shopper is a free and open-source platform that tracks prices of all products available across different supermarkets. In one place, you can easily compare prices of all prducts and see what's cheaper where. Moreover, it lets you browse each supermarket individually, highlighting the change in prices over time. So it's easy to see how much each product has gone up and down in price, and when.

In addition to saving us money, The Angry Shopper also exposes how supermarkets play around with their prices to trick us into paying them more for less.

⚙️ How it works

Every day, The Angry Shopper crawls the websites of the supermarkets on the platform, and checks for the prices of every product they sell. All the data is then saved in a database that logs the changes, and displays that information for us. Once the same products across the different supermarkets have been linked together in the database, they appear in the "Compare" section of the platform where you can see the prices for the same products side-by-side across the different supermarkets.

💕 Contributing to The Angry Shopper

This is a free and open-source project that's aimed to be for us, and by us. We all grocery-shop and it's time we didn't get ripped off for it. There are many ways in which you can contribute to the project, including:

💬 Ask for new features by submitting an issue

⚠️ Report any bugs you come across and help us fix them

📝 Manage all of the bugs and features the growing team needs to work on

📂 Connect the same products across the different supermarkets so that The Angry Shopper can compare their prices

📺 Marketing effort to grow reach

👩‍💻 If you know Python, you can clone the repo and push your code

👨‍🎨 If you're a designer, let's enhance the UI

👩‍🔧 If you're into servers and DevOps, check out the setup below and help us make this scalable

💻 Technical details

I'm not a developer, but I got hit by COVID and while self-isolating, learned to program in Python and built the entire platform from scratch. I watched endless hours on YouTube, with most credit going to the phenomenal Corey Schafer whose free online videos taught me pretty much everything I know.

  • Built in Python3 using Flask as the framework, and SQLAlchemy as the ORM. I tried my best, but anyone with a bit of experience can surely improve/refactor the code
  • Used MySQL as the database, just because I'm used to it from previous data-driven projects. Happy to migrate to Postgres or something else if it's better.
  • UI built with Bulma.io as the CSS framework, with SASS. Used Iconify's free svg icons.
  • Hosting on a Linode server (starting with the smallest, $5 monthly plan), with Ubuntu, Nginx, Gunicorn, MySQL and a few of the Python/Flask libraries.
  • Bought the domain from Name.com, and used Let's encrypt for a free, renewed SSL certificate.

😠 About me

I'm a techie but what I do doesn't define me. I prefer to be categorized as your typical revolutionary socialist with radical ideas, obnoxious opinions, and an ability to endlessly debate the world and how to change it. I'm a Cairene, a foodie and a wanna-be cook, so The Angry Shopper fits me well, I think.

🆓 License

The Angry Shopper is licensed under Creative Commons Zero v1.0 Universal with the intent of making accessible to anyone, anywhere.

About

Scraping Cairo's supermarkets to compare prices and track changes.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published