Case study Marketplace / Live commerce
Auctibuy
A real-time auction marketplace connecting discovery, creator operations, bidding, specialist roles, and account workflows.
Problem statement
Connect discovery, participation, and seller operations while keeping auction decisions authoritative and each account’s available actions explicit.
Proof / A quick look
See the product before the detail.
01 / Overview
The brief.
Auctibuy combines a consumer marketplace with the operational tools behind live commerce. My work spans the React interface and the Express API: browsing a feed, entering an auction, creating a listing, managing an account, and administering the platform are connected journeys with different permissions. Those journeys share an authoritative auction model, with room state kept in step through real-time updates and polling. The product brings discovery, participation, and seller operations into one experience.
02 / Situation
What was already true.
A visitor can arrive through a feed or Explore, inspect an item and its seller, and move into a live room. Returning users also need watchlists, inbox activity, and account tools. Creators need a studio for their selling work; administrators need moderation and audit surfaces. The product therefore extends beyond the public auction screen.
03 / Tension
The competing needs.
The interface needs rapid price and activity updates, while each bid must be checked against the current auction in the database. Discovery should stay approachable as sellers, specialists, and administrators handle more complex responsibilities. Current price, participation state, and the server’s response to a bid all need to remain clear within the pace of a live room.
04 / Decision
The choice that set the shape.
Separate the consumer, creator, and administration surfaces around a shared API. Keep MongoDB authoritative for auction mutations, use Redis for derived hot state and fan-out, and retain polling when the live connection is unavailable. Make the route from item context to participation readable before exposing the next action.
05 / Responsibilities
What I designed and built.
My implementation spans product structure, responsive React screens, typed API integration, and the Node.js service layer. That includes the feed and Explore journey, auction-room states, creator studio, account watchlists and inbox, plus moderation and audit operations. I also connected validation, authentication, auction rules, and provider-facing settlement services so the interface follows the backend’s workflow states and commercial rules.
06 / Architecture
The implementation behind the interface.
The workspace separates an Express 4 API from a React 19 application built with TypeScript, Vite 6, and React Router 7. Mongoose 8 maps the MongoDB domain models; Zod validates request shapes and JWT supports session authentication. MongoDB is the source of truth, with version-keyed compare-and-swap and transaction paths for auction mutations. Redis accelerates derived room state and distributes events through pub/sub. The ws transport delivers authenticated room updates, with HTTP polling retained as a fallback. Audit, inbox, and real-time side effects follow the committed domain operation. The provider-facing service layer handles settlement workflows separately from auction mutations and room updates.
07 / Access control
Who can do what.
The API defines admin, seller, valuator, estate-agent, trader, escrow-provider, and bidder roles. Capabilities include buyer, seller, the four specialist roles, brand-account, dealership, and admin. JWT identifies the session; authorization hydrates the user from a fresh database read and evaluates the account’s current effective roles and capabilities. requireRole accepts a matching effective role or capability. Session-version checks support revocation. Authenticated WebSocket delivery rechecks the account against the database, so access to room events follows current authorization as well as the initial connection.
08 / System
How the pieces fit.
The consumer loop is discover, inspect, enter a room, read current state, and submit an eligible action. Creator tools prepare and manage the selling side; account areas collect watchlists and inbox activity. Administration handles moderation and operational review. Auction state, room messages, and settlement workflow remain distinct concerns even when they meet on the same screen.
09 / Evidence
What the shipped interface can show.
Explore and auction rooms present item, seller, and participation context, while the creator studio and account areas support listing work, watchlists, and inbox activity. Separate web and API applications contain the auction transaction paths, Redis hot-state and pub/sub modules, authenticated room delivery, and polling fallback. Moderation and audit tools give administrators a dedicated operational surface.
10 / Next iteration
The next question.
Exercise the browse-to-room journey on a slow connection and compare connected, stale, and polling states. Review how a first-time bidder understands eligibility and the response to a submitted action, and how a creator moves from preparing a listing to following its operational state.
11 / Feature list
Features.
- Feed and Explore discovery
- Live auction rooms and bid states
- Creator studio and listing workflows
- Account watchlists and inbox
- Effective roles and capabilities
- Moderation and audit operations
- WebSocket updates with polling fallback
- Provider-facing settlement workflows