Overview: An auction management system - which have three roles: Admin, Seller, and Bidder. The application allows bidders (end user) to bid on
auction created by seller ( product approved by admin), and find a winner after auction close along with feedback system.
- Approves products added by seller, or cancel product request with a review note rather than disapprove.
- view bidder-list, seller-list, auction-list etc.
- manage product-categories
- create product request; every product must belong to a category, default status - PENDING
- create auction with approved product only giving a valid auction s.t and e.t. , and can cancel it until auction is OPEN
- can delete an auction if cancelled or pending (complete delete)
- can delete a unsold auction only to deactivate it (Record will be available in db)
- can give feedback on a closed auction to a bidder
- can see profile detail, update profile, and view auction history
- register as bidder, login, recover account ( forget password )
- can place bids even below treshold, but must above - current highest+minimum required increment
- a bid/bidder would not be declared winner if bid is below 50% of start price would be flagged for review
- auction would be flagged if final price is below treshold
- can give feedback on a closed auction to a seller
- can see profile detail, update profile, and view bid history
- node, express, mongodb, nodemailer, node-cron, multer, jwt, bcrypt, cryptojs
- User
- Profile
- Category
- Product
- Auction
- Bid
- Feedback
- post & patch body validation with zod
- access controll with auth middleware based on role
- controll of status transition (from one status to another status) regarding product status/ auction status etc
- Auction time validations (start/end times) while converting it to standard utc time from given user time and time zone.
- Bid amount validation in the context of current highest, minimum increment value.
- prevent sudden update of auction end time to prevent unfair advantage
- notification could have sent to winner bidder at winning, to seller at auction start and end, to admin at new product request etc
- Clone the repository.
- copy whole .env.example to create a new .env file
- npm install
- npm run dev
- import postman collection which is also to be found in git repo
- an admin as user with role: ADMIN along with profile detail is already in db
- For user wth role: SELLER or BIDDER - register - veryfy mail - login - get token / generate test auth token to set it in p.m. header
- postman environments preety much self explanatory