Skip to content

theadityamittal/Live-Flash-Auctioning-System

 
 

Repository files navigation

Live Flash Auctioning System

Lint and Format Check

The Live Flash Auctioning System is an innovative platform that facilitates real-time auctions with minimal latency. Auctioneers can host live auctions, engaging participants globally. The platform ensures fair bidding practices through synchronized countdown timers and instant notifications, allowing users to participate from any location seamlessly.

Links:

  1. Youtube: Flash Bids - Demo
  2. Presentation: Flash Bids - Presentation

Architecture

The architecture of the project is visualized in the diagram below:

Architecture Diagram

Product Features:

  1. Real-Time Bidding Interface:

  • Auctioneers can input product details, including auction date, time, and duration.
  • Users can view products at the specified times, see the number of bids placed, and participate in real-time bidding.
  1. Bidding Mechanism:

  • Participants can place bids in real-time using WebSockets for low-latency communication.
  • The system efficiently handles concurrent bids, ensuring accuracy and fairness.
  • The highest bidder at the end of the auction wins the item.
  1. Dynamic Countdown Timer:

  • A synchronized countdown timer is displayed to all users, ensuring fairness.
  • Utilizes AWS Time Sync Service/Websockets for accurate timekeeping across all users.
  1. Auction Notifications:

  • Send personalized notifications to users about upcoming auctions.
  • Send winner details and leaderboard to all auction participants
  1. Sniping Prevention:

  • If a bid is placed within the last 30 seconds, the auction timer extends automatically by a set duration (e.g., 1 minute).
  • Extensions are communicated instantly to all participants, preventing last-second bidding advantages.
  1. Scalability:

  • Employs AWS EC2 with auto-scaling groups to adjust resources dynamically based on user traffic.
  • Ensures consistent performance during peak times and cost-efficiency during low traffic periods.
  1. Data Storage and Analysis:

  • All bids, auction details, and timer extensions are stored in Amazon DynamoDB for record-keeping and analysis.
  • Enables detailed analytics on bidding behavior and auction performance.
  • Product images are stored in Amazon S3, ensuring fast and reliable media access.
  1. User Authentication:

  • Secure user authentication and management using AWS Cognito.
  • Supports user profile management and interest tracking for personalized experiences.
  1. Post Auction Analytics:

  • After the auction ends, the bid history goes into the auction S3 bucket which can be used for analysis

Architecture

The architecture of the project is visualized in the diagram below:

![Architecture Diagram](system_design_docs/System Architecture.svg)

Getting Started

Follow these steps to clone the repository and run the application locally with Black and Flake8 checks.

Prerequisites

  • Python 3.12
  • pip

Steps to Clone and Run the Project

  1. Clone the Repository

    git clone https://github.com/arsalananwar11/Live-Flash-Auctioning-System.git
    cd Live-Flash-Auctioning-System
  2. Create a Virtual Environment

    python3 -m venv venv
    source venv/bin/activate  # On Windows use `venv\Scripts\activate`
  3. Install the requirements

    pip install -r requirements.txt
  4. Run the Application

    flask run

Steps to Contribute to the Project

  1. Create a Branch for Your Feature or Fix

    git checkout -b feature/<your-feature-name>
  2. Run Black and Flake8 Checks

    # Auto-format with Black
    black .
    
    # Check for linting issues with Flake8
    flake8 .
  3. Commit Your Changes

    git add .
    git commit -m "Add a brief description of your changes"
  4. Create a Branch for Your Feature or Fix

    git push origin feature/<your-feature-name>
  5. Open a Pull Request

    • Go to the repository and click on Pull Requests.
    • Click on New Pull Request and select your branch to submit your changes for review.
    • Wait for all the checks to pass and atleast one reviewer to approve your PR

Tech Stack

  • AWS Cognito for user authentication
  • EC2 with Autoscaling groups to manage resources based on fluctuating user traffic
  • AWS Load Balancer to handle large volumes of traffic
  • WebSockets for low-latency real-time communication
  • Amazon DynamoDB to store bids, auction product details, and leaderboards
  • Amazon S3 to store any associated media (e.g., product pictures) and bid history for post auction analytics
  • AWS RDS (Relational Database System) for structured auction data storage
  • AWS EventBridge for triggers for Auction Infrastructure setup, Start and End Auction
  • Amazon SES (Simple Email Service) for notifications to inform users about upcoming auctions
  • Amazon SQS (Simple Queue Service) to accept bids from users, store notification mails to be sent to the users
  • Amazon CloudWatch to monitor logs and overall execution

Data Sources:

  • User Sourced Data:
    • User Data: Collected during sign-up via AWS Cognito, including interests and optional location data. Used for personalized notifications and targeted advertisements.
    • Auction Data: Product details, auction schedules, and historical data stored in Amazon DynamoDB. Includes information on bids placed, timestamps, and auction outcomes.
    • Bidding Data: Real-time bid submissions handled through Amazon SQS for efficient processing. Stored for analysis and to ensure transparency in the bidding process.
    • Media Content: Product images and videos uploaded by auctioneers to Amazon S3. Ensures high availability and scalability for media assets.

Existing Products:

  1. eBay Live Auctions:
  • Offers live auction experiences but may lack synchronized countdown timers and advanced sniping prevention features.
  • Latency issues can affect the real-time bidding experience.
  1. Invaluable:
  • Provides live auctions with real-time bidding capabilities.
  • Does not emphasize dynamic auction extensions to prevent sniping.
  1. LiveAuctioneers:
  • Hosts live auctions for a global audience.
  • May face challenges with latency and does not fully address peak traffic scalability.

Snippets:

  1. Flash Bids Dashboard alt text

  2. Auction Creation alt text

  3. Auction about to start: Infrastructure being set up in the backend alt text

  4. Auction Bidding Mechanism: Leaderboard, Dynamic Countdown and Rate Limiting in action alt text

  5. Auction Ended: Bidding no longer accepted alt text

  6. Email Notifications:

  • Upcoming Auctions: To all the users in the system (via SQS queue 2) alt text

  • Auction Results and Leaderboard Details: To only the auction participants (via SQS queue 1) alt text

About

Live Flash Auctioning System enables real-time, low-latency auctions ensuring fair bidding with synchronized countdowns, instant notifications, allowing seamless participation from anywhere.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 72.0%
  • JavaScript 12.3%
  • HTML 8.8%
  • CSS 6.2%
  • Other 0.7%