Case study
UniBid
Bidding-based off-campus rentals marketplace.

Students bid on off-campus housing in real time, with role-scoped dashboards for students, parents and landlords.
The problem
Student housing is dominated by fixed-price listings with no room to negotiate, scattered across unreliable platforms. Parents fund most of these rentals but have no way into the process at all.
My approach
Designed a live bidding system over WebSockets with sub-200ms updates, backed by data models tuned for listings, bids and notifications, and separate dashboards scoped to each role.
How it's built
Next.js over Supabase and PostgreSQL. Bids flow through a WebSocket channel and are validated server-side before commit, so a client can never post a winning bid it didn't earn. Role access is enforced by row-level security.
Key features
- Bidding marketplace for verified off-campus rentals
- Parent access to bid and message on a student's behalf
- Service booking for moving, cleaning and repairs
- Built-in messaging between students, landlords and providers
- In-app, email and SMS notifications
- Listings filtered by proximity to partner schools
Challenges & Solutions
Simultaneous bids on the same listing raced each other and could both be accepted.
Moved bid acceptance into a serialised server-side transaction so ordering is decided authoritatively, with clients reconciling to the committed result.
Broadcasting every bid to every connected client saturated the socket layer at peak.
Scoped subscriptions per listing so clients only receive updates for what they are watching.
Results
- 1,000+concurrent users with conflict-free bid synchronisation.
- 200msbid updates, keeping every bidder on the same state.
- 3role-scoped dashboards for students, parents and landlords.
Implementation stack
Tech Stack
Frontend
- Next.js
- TypeScript
Styling
- TailwindCSS
- ShadCN
Backend
- Supabase
- PostgreSQL
Real-time
- WebSockets
Payments
- Stripe
Notifications
- Resend
- Twilio
Analytics
- PostHog