Back to all projects

eAuction

Real-time auction application

A web application where participants can place auction bids and see updated bids immediately.

Who is it for?
Auction bidders and users listing products
My contribution
Personal project · Software development
Period
2023

The need to solve

Bid and closing information must stay current across users, with background tasks completing the auction’s closing workflow.

What it enables

The application updates bid amounts, bid counts and closing times live, with closing notifications and order creation tasks.

What I built

I developed product, bidding and user flows across a React client and Django API, connecting real-time broadcasts with closing tasks.

Explore development details

For readers interested in the technical approach: workflows, technologies and implementation decisions.

How does the process work?

Auctions span product discovery, live bidding and closing tasks. WebSocket updates and scheduled jobs have distinct responsibilities.

Main flow

  1. Open a user session

    Verify the client identity through OAuth and user flows.

  2. Explore the product and auction

    The React / Redux interface loads product, bid and closing information from the API.

  3. Prepare a bid amount

    Compare starting and existing bids and calculate the additional payment.

  4. Persist the bid

    The DRF API saves the bid linked to its user and product.

  5. Broadcast the live update

    Django Channels / Redis publishes a WebSocket event to the product’s auction group.

  6. Update participant screens

    Refresh the bid amount, bid count and closing time in the live interface.

  7. Process closing with a scheduled task

    Celery checks expired auctions and determines the highest bid.

  8. Notify participants and create the order

    If bids exist, send winner / loser notifications and create the winner’s order.

Alternative and supporting processes

When closing approaches

  1. Find auctions nearing their deadline

    Celery checks the closing dates of active auctions.

  2. Remind participants

    Send closing reminder emails to users who placed bids.

When the bid amount is insufficient

  1. Return a calculation error

    Return an error for an amount that does not exceed the starting price or current highest bid.

  2. Revise the amount

    The user can return to the calculation with a new amount.

WebSocket for bids, Celery for the closing flow.A schematic illustration of how the product works.

The approach

  • Built product-listing, bidding and user workflows across a Django REST Framework API and React/Redux client, with OAuth 2.0 authentication integration.
  • Built auction-scoped WebSocket broadcasts with Django Channels/Redis, updating bid amounts, bid counts and closing times live in the client.
  • Developed Celery tasks for closing reminders, winner/loser notifications and order creation when auctions end.

Technologies

  • Django REST Framework
  • React
  • Django Channels
  • Redux
  • Redis
  • Celery