bidding-system icon indicating copy to clipboard operation
bidding-system copied to clipboard

The Bidding System is a scalable, real-time auction platform built with Go.

Bidding System

Overview

The Bidding System is a scalable, real-time auction platform built with Go. It allows users to create and participate in auctions, place bids, and receive notifications in real-time. The system is designed to handle high concurrency and ensure data consistency while maintaining a user-friendly interface.


Features

  • Auction Management: Create and manage auctions with detailed descriptions and time limits.
  • Real-Time Bidding: Enable users to place and track bids in real-time.
  • User Authentication: Secure access with JWT-based authentication.
  • Notifications: Notify users about auction updates and bid status.
  • Data Caching: Improve performance using Redis for frequently accessed data.
  • Extensibility: Modular design for easy addition of new features.

Technology Stack

  • Backend: Go (Golang)
  • Database: Redis (Real-time DB) & Postgres (Persistent DB)
  • Caching: --
  • API Framework: --
  • Real-Time Communication: WebSockets
  • Authentication: --

Installation and Setup

Prerequisites

  • Go (version 1.19 or later)

Environment Variables

Create a .env file in the root directory with the following environment variables:

PORT=<port-number-of-the-service>

Steps

  1. Start the server:
    go run cmd/server/main.go
    

With Docker Compose

  1. Start the server:
    docker-compose up
    

API Endpoints

Auction

  • GET /auctions/:id - Retrieve details of a specific auction.
  • POST /auctions - Create a new auction.

Bids

  • POST /bids - Place a bid on an auction.

User

  • POST /register - Register a new user.
  • POST /login - Log in and get a JWT token.

Notifications

  • GET /notifications - Get user notifications.

Future Enhancements

  • Add unit and integration tests.
  • Implement advanced bidding strategies.
  • Introduce analytics for auction trends.
  • Enhance UI for end-users.

Contributing

Contributions are welcome! Please fork the repository and submit a pull request with your changes. Ensure code quality and consistency before submitting.


License

This project is licensed under the MIT License. See the LICENSE file for details.