The problem
An online auction web app with live bidding and countdown timers lets buyers compete for items in real time: each lot carries its own ticking clock, bids arrive instantly, and the highest bid when the timer hits zero wins. Classroom auction projects usually fake this with page refreshes or static timers, so students never learn the genuinely hard parts — pushing bid events to every connected browser, validating concurrent bids against a moving price, and closing auctions fairly when the clock runs out. This project implements the real thing: a WebSocket-powered bidding engine that broadcasts every valid bid to all viewers at once, per-lot countdown timers driven by server time, minimum-increment bid validation, public bid histories, a watchlist, and seller listing creation. An anti-sniping rule extends any auction that receives a bid in its final 90 seconds, closing the classic last-second-snipe loophole. The shipped build is a complete teaching-grade marketplace with source code, database schema, deployment guide and the full viva kit.
Lists a lot with title, category, condition, starting price and duration.
Follow the working sequence
How it works
- A seller creates a listing with title, category, condition, starting price and duration; the lot appears on the live grid with its countdown running.
- The frontend renders each lot's timer from the server-provided end time, ticking down every second; the server's clock is the authority for closing.
- A buyer opens a lot and places a bid; the backend validates it against the current price plus the minimum-increment rule for its price band.
- Valid bids are written to the database and broadcast to every connected client over WebSockets, updating price, bid history and bid count everywhere at once.
- If a bid lands in the final 90 seconds, the server extends the lot's end time by 90 seconds and broadcasts the new close time to all viewers.
- When the timer reaches zero the auction closes; the highest bidder is marked the winner, the lot shows "Sold", and the full bid history is retained as the record.
Tech stack:
- Node.js · Express
- MongoDB
- Socket.IO
- React
- JWT authentication
- HTML · CSS · JavaScript
- Nginx (deployment)
- Git
| Parameter | Value |
|---|---|
| Live update mechanism | WebSockets (Socket.IO) — implemented in shipped build |
| Timer resolution | 1 second, server clock authoritative |
| Minimum bid increment | ₹50 / ₹100 / ₹250 by price band (configurable) |
| Anti-sniping extension | 90 seconds (configurable) |
| Auction durations | 10 minutes – 7 days (configurable) |
| Concurrent bidders | Approximately 500 per Node instance (design target, not load-tested) |
| Bid broadcast latency | Under 300 ms on LAN (design target) |
| Data persistence | MongoDB — lots, bids, users, watchlists |
| Authentication | JWT sessions (implemented) |
| Payment integration | Not included in base build (optional customization) |
Project features
- [Live auction lot grid] The home view shows every open lot with its live countdown, current bid and bid count, refreshing every second; category filters and search narrow the grid. (Implemented)
- [Place-bid flow with validation] The bid box enforces the minimum increment above the current bid, with quick-bid buttons at +1, +2 and +4 increments; invalid bids are rejected with a clear message. (Implemented)
- [Per-lot public bid history] Every bid, bidder and timestamp is listed on the lot page, newest first, so the full bidding trail is transparent to everyone. (Implemented)
- [Countdown timers with anti-sniping] Each lot carries its own ticking timer driven by server time; a bid in the final 90 seconds extends the auction by 90 seconds, defeating last-second sniping. (Implemented, extension length configurable)
- [Watchlist] Users can track lots with one tap; the watchlist tab keeps followed lots one click away with their live timers. (Implemented)
- [Seller listing creation] A create-listing form (title, category, condition, starting price, duration, description) publishes a new lot to the grid instantly, with a "My listings" panel showing status and bid counts. (Implemented)
- [WebSocket live-bidding engine] The shipped build pushes every valid bid to all connected browsers over WebSockets — price, history and timers update everywhere with no refresh. The single-file demo simulates rival bids with clearly labeled bots to demonstrate this behavior. (Implemented in the shipped build; simulated in the demo)
- Optional / future scope: payment-gateway integration (Razorpay/Stripe class) is NOT part of the base build — settlement happens buyer-to-seller; proxy/max-bid auto-bidding, reserve prices, admin moderation panel and a mobile app are future scope.
What is included
- Complete source code (Node.js/Express backend, React frontend)
- MongoDB schema with seed data for demonstration lots
- WebSocket live-bidding engine with anti-sniping logic
- JWT authentication for buyers and sellers
- Setup and deployment guide (local + Nginx)
- Project report PDF (background, architecture, methodology, results)
- PPT presentation for final review
- Viva Q&A preparation document (WebSockets, concurrency, validation, timers)
Limitations & prerequisites
- The base build has NO payment gateway — settlement happens between buyer and seller after the auction (UPI/cash on pickup); payment integration is an optional customization.
- Winning bids are not escrowed and the system cannot force a winning bidder to pay — dispute handling is manual in the base build.
- The demo's rival bidders are simulated bots (clearly labeled); the 500-concurrent-bidder figure is a design target, not a load-tested claim.
- Displayed timers tick on the client, but only the server's clock closes an auction — clients with wrong system clocks still get the correct outcome.
- No seller identity verification in the base build — the design assumes a trust context like a campus community.
- The base build supports one photo per lot (approx. 2 MB cap); multi-photo galleries are an optional customization.
- This is a teaching-grade marketplace, not a production e-commerce platform — no fraud detection, tax invoicing or shipping integration.
Frequently Asked Questions
How does the live bidding actually work?
The shipped build uses WebSockets (Socket.IO): when a bid passes validation, the server writes it to MongoDB and immediately pushes it to every connected browser. All viewers see the same updated price, bid history and timer within a fraction of a second — no page refresh is involved. The single-file demo simulates rival bids with clearly labeled bots to demonstrate the same behavior offline.
Is a payment gateway integrated?
No — and this is stated plainly, not hidden. The base build ends at the hammer: the winner and seller settle between themselves (UPI or cash on pickup). Integrating Razorpay or Stripe for escrow-style payments is a realistic optional customization if your college expects a complete transaction flow.
What stops last-second bid sniping?
An anti-sniping rule: any bid placed in the final 90 seconds automatically extends that auction by 90 seconds, and the new close time is broadcast to all viewers. The extension length is configurable in the code, and the demo lets you watch the timer jump when a late bid lands.
Can the auction rules be customized?
Yes. The minimum-increment bands, anti-sniping window, allowed auction durations and categories are all configuration values, not hard-coded magic numbers. Auction durations are set per lot at listing time, and the seller form fields are easy to extend with new attributes. Realistic extensions include reserve prices, proxy (max-bid) auto-bidding, an admin moderation panel, and email/SMS outbid alerts.
Is this project suitable for a final-year project?
Yes — for Computer Science, IT and Web Technology programs. It demonstrates WebSocket-based real-time communication, concurrent bid validation, server-authoritative timers, database design for lots and bids, JWT authentication, and a complete buyer-seller workflow — all with honest, well-documented limitations that make for strong viva discussion.
Components & software requirements
- Node.js · Express
- MongoDB
- Socket.IO
- React
- JWT authentication
- HTML · CSS · JavaScript
- Nginx (deployment)
- Git
Delivery information
Built-to-order project. Delivery timeline is shared after order confirmation based on current queue.
Support terms
Complete documentation, setup guide, and viva preparation included. Support for setup and explanation provided.
Download free synopsis (PDF)
Enter your name and email — the synopsis PDF downloads immediately. We may send occasional project updates; no spam, unsubscribe anytime.