- Introduction
- Technologies
- Design Decisions
- Getting Started
- Running the Application
- Usage
- Troubleshooting and FAQ
- Contributing
- License
async-auction-platform is a web application designed to provide an enhanced real-time communication system for online auctions. This platform allows users to enter a bidding room, submit bids, and receive notifications for the highest bids at the end of the auction. Additionally, it automatically generates invoices for the highest bidder. The project uses a microservices architecture with an asynchronous communication system for scalability and maintainability.
The following technologies and libraries are used in this project:
- ASP.NET Core (.NET 7): A cross-platform framework for building web applications.
- Duende IdentityServer: For handling Single Sign-On (SSO) and OAuth2/OIDC authentication.
- MassTransit: A distributed application framework for building message-based systems.
- SignalR: For real-time communication.
- YARP (Yet Another Reverse Proxy): For API Gateway functionality.
- RabbitMQ: A message broker for asynchronous messaging.
- Clean Architecture: For organizing code and enforcing separation of concerns.
- CQRS (Command Query Responsibility Segregation): A pattern to separate read and write operations.
- Repository Pattern: For data access abstraction.
- gRPC: For high-performance communication between microservices.
- Serilog: For logging.
- Paystack: For payment processing.
- PostgreSQL: The primary relational database.
- MongoDB: For storing unstructured data.
- OpenTelemetry and Grafana: For observability and monitoring.
- Docker and Kubernetes: For containerization and orchestration.
- Microservices Architecture: To allow independent deployment, scaling, and development of different services.
- Duende IdentityServer: Chosen for secure and flexible authentication and authorization.
- MassTransit and RabbitMQ: Used for asynchronous communication and message handling between services.
- YARP Gateway: Provides a reverse proxy gateway for routing requests to appropriate services.
- Clean Architecture: Ensures high maintainability and testability.
- CQRS and Repository Pattern: For separation of command and query responsibilities and abstracted data access.
To get started with the async-auction-platform project, follow these steps:
-
Clone the repository:
git clone https://github.com/YusuffAhmad/async-auction-platform.git
-
Navigate to the project directory:
cd async-auction-platform
-
Restore the dependencies:
dotnet restore
-
Update the database connection string in the respective
appsettings.Development.json
files to match your PostgreSQL database configuration. -
Apply the database migrations for each project:
dotnet ef database update
( e.g.,dotnet ef database update --project src/AuctionService
) -
Run each project individually using the
dotnet run
command (e.g.,dotnet run --project src/AuctionService
)
Once the application is running, you can access the API documentation using Swagger UI. Open your web browser and navigate to the respective URLs for each project:
- RoomsService:
https://localhost:5001/swagger/index.html
- BiddingService:
https://localhost:7002/swagger/index.html
- GatewayService:
https://localhost:6001/swagger/index.html
- IdentityService:
https://localhost:5000
Here, you can explore the available endpoints and test them.
Contributions to the AuctionNext project are welcome. To contribute, follow these steps:
- Fork the repository
- Create a new branch:
git checkout -b feature/your-feature-name
- Make your changes and commit them:
git commit -am 'Add some feature'
- Push the changes to your fork:
git push origin feature/your-feature-name
- Create a new pull request
The AuctionNext project is licensed under the MIT License.