Bidwise is an online bidding platform that demonstrates how .NET Aspire can be used to orchestrate a full-stack, polyglot system composed of multiple technologies. It brings together microservices built with .NET and Spring Boot, a React frontend with a BFF server, SQL Server for data storage, and Kafka for inter-service communication.
- .NET Aspire for running React, Kafka, Sql Server Databases, and all Microservices
- Security across services with Duende Identity Server
- Auction winner determination handled via scheduled Hangfire background jobs triggered at the auction end time
- Real-time updates for bids and comments with SignalR
- Phonetic search support using the Double Metaphone algorithm (Users can find auction items even with misspellings or similar-sounding words)
- Amazon S3 for file storage and CloudFront for CDN
- A ReactJS frontend with a Backend-for-Frontend (BFF) server
- Personas: The system will be used by Users (Buyers and Sellers) or Guests a. Guests: Browse Auctions, View Details of Auction, View User Profiles b. Users: Browse Auctions, View Details of Auction, View User Profiles, Post an Auction (Sell), Place Bid (Buy), Post Comment, Manage Account, Mange Listed Auctions
- Bidding (Buying): System allows users to bid on products a. Users can bid on product as long as the auction has not ended
- Posting Auction (Selling): System allows users to post an auction a. Users can post an auction with required information along with an auction end time
- Commenting: System allows users to comment on products
- Winner Selection: For every auction, the system will automatically determine a winner automatically at the users specified auction end time a. The system must choose a winner and set the winning amount based on auction type b. If winner selection fails, the system must retry using an exponential backoff mechanism
- User Profiles: System allows everyone to view user profiles a. User profile includes Products (Items) Auctioned and Bid History
- Managing Account: System allows users to manage their account a. Change email b. Forgot password, Reset password c. Setup two-factor authentication d. Add phone number
- Install prerequisites:
- Configure application settings:
- Fill
AWS
section inBidwise.Catalog
project'sappsettings.json
- Fill
Authentication
andMail
sections inBidwise.Identity
project'sappsettings.json
- Fill
Parameters
sections inBidwise.AppHost
project'sappsettings.json
- Fill
- Start the project:
- Launch the
Bidwise.AppHost
project this project is managed by .NET Aspire, which will automatically pull required container images and launch all dependent services and microservices for you
- Launch the
The UI design is inspired by carsandbids.com.
The homepage displays active auctions, with each card showing the product name, short description, time remaining, current highest bid, and a product photo. The layout is simple for easy browsing by both guests and registered users.
This page displays key information about the auction: the product name, a short description, photos, time left, highest bid, number of bids, and number of comments.
There is a 'Place Bid' button for users to place their bids. The right side of photos shows the users bids, allowing participants to track bidding activity.
The bottom half displays the seller's note, product attributes, and a comment section. It also includes a list titled 'Auctions Ending Soon', featuring other auctions which are ending soon.
The profile page is accessed by clicking on a username and displays two main sections: Items Auctioned and Bid History. The Items Auctioned section shows the auctions the user has listed, while the Bid History section lists the auctions, they have placed bids on.
The Bid History part of the profile page displays a list of auctions. Each card shows the badges: a clock icon indicates ongoing auction, Won for $200
signifies a winning bid, and Bid $30
without a clock indicates a lost auction.
This page provides users with an overview of their listed products in a clear, table format. The table displays important information for each listing, including the Item, Result, Starting Bid, Current Highest Bid, and Winner. This format allows users to easily manage and track the status of their auctions.
The My Bids page also allows users to view and manage their bids in a straightforward table format. This page provides users with a clear overview of their bidding activity and the current status of each item they have bid on.
For orchestration, observability and telemetry.