BerkayDur / sales-tracker-hermes

This repository contains the source code for the Hermes Sales Tracker. A project undertaken by 4 trainees at Sigma Labs over the course of 2 weeks.
https://www.sigmalabs.co.uk/
3 stars 0 forks source link

badge badge badge

Welcome to Hermes Sale Tracker Repository

This project is designed to track products and notify users when they go on sale. By entering the product URL and your email into the dashboard, you can receive notifications whenever the product's price decreases or falls below a specified threshold. Additionally, the dashboard lets you view the price history of tracked products, making sure you always get the best price.

Folders

Folder Description
.github GitHub-specific files and Actions.
.util Utility scripts and tools for GitHub Actions.
Clean-up The scripts for cleaning up unsubscribed products from the database.
Dashboard Code used for the dashboard and visualization.
Database Database management scripts and configurations.
Diagrams Diagrams of the system architecture and entity relationship diagram.
ETL ETL pipeline scripts and configurations.

Setup

This project is split into several main directories that contain the source code regarding that section. Each section has it's own terraform script that is used to build AWS infrastructure.

Dependencies are local to each main directory and it is thus recommended to set-up the code in the following manner (Click and follow the steps in the README.md of each):

  1. Database
  2. Clean-up
  3. ETL
  4. Dashboard

Cloud Architecture

The architecture of the project is shown in the following brief overview:

Architecture Diagram

Cloud Architecture Description

The Hermes Sale Tracker project uses cloud architecture designed for efficiency, scalability, and automation. Below is a detailed description of each component and its role in the system.

Relational Database Service (RDS)

An Amazon RDS instance is used to store the tables as depicted in the Entity Relationship Diagram (ERD). These tables include:

ETL Pipeline

The Extract, Transform, Load (ETL) pipeline is designed for updating product price data regularly and allowing for extensive upscaling without compromising performance.

Streamlit Dashboard

The Streamlit dashboard provides a user interface for managing and tracking product subscriptions. It runs on an Amazon ECS (Elastic Container Service) and offers the following functionalities:

Cleanup Script

A cleanup script runs daily to remove the RDS entries that no longer have any users subscribed to them, reducing redundancy.

Infrastructure as Code (IaC) with Terraform

Each component of the architecture is provisioned and managed using Terraform scripts, ensuring consistency, scalability. Continuous Integration and Continuous Deployment (CI/CD) practices are followed, allowing for seamless deployment and updates.

Key Technologies Chosen

Amazon Web Services (AWS)

AWS was chosen for this project because it is the most widely used cloud platform and offers a wide range of tools and services that allow for scalability, and ease of use.

Streamlit

Terraform

Entity Relationship Diagram

The database structure can be seen in the following diagram:

ERD Diagram
Table Description
users Containing the contact information for each registered user
subscriptions Containing products that each user is subscribed to as well as the optional price threshold that the user entered for each product
products Containing the data for each product that is being tracked
price_readings Containing the readings for the the prices for each product over time

Authors

Name Github Profile
Faris Abulula A-Faris
Berkay Dur BerkayDur
Daniel Hudson danfh00
Nabiha Mohamed NabihaMoh

We hope you find this project useful for tracking and managing product sales. Happy tracking!