All work

Full-stack · Case study

A production-deployed property marketplace for buyers, sellers, renters, agents and admins, with listings, viewings, rental applications and real-time messaging.

realestate-orpin-eight-16.vercel.app
Real Estate Marketplace interface
Role
Design, full-stack build, deployment
Stack
React · Redux Toolkit · Node.js · Express · MongoDB · Socket.IO · Jest · Docker
Highlights
5 user roles · Real-time messaging · Jest + Supertest API tests · CI, Docker, deployed

01 / Context

The problem

A property marketplace has to serve people with very different goals: buyers and renters searching, sellers and agents managing listings, and admins keeping the platform trustworthy. Each of them needs its own tools without the product splitting into separate apps.

02 / Scope

What I built

  1. 01Five roles (buyer, seller, renter, agent, admin) with role-specific dashboards and role-based route protection on the client and the API.
  2. 02Sale and rental listings with photos, filters and a multi-step listing wizard, plus admin review before a listing goes live.
  3. 03Socket.IO messaging with typing indicators, read receipts, online status and live notifications.
  4. 04Rental applications, viewing scheduling and open houses, a wishlist, property comparison and a mortgage calculator.
  5. 05Seller analytics (views, saves, inquiries per listing) and admin moderation of users, listings and reports.

03 / Engineering

Decisions and trade-offs

  1. 01Session tokens live in an httpOnly, Secure cookie so page JavaScript can never read them; cookie-authenticated writes require an X-Requested-With header as CSRF protection.
  2. 02All input is stripped of MongoDB operators, search patterns are escaped, page sizes are capped, and login, registration and contact are rate-limited.
  3. 03The same JWT and role middleware protects both the REST API and the WebSocket server, so real-time features follow the same access rules as everything else.
  4. 04API behaviour is covered by Jest and Supertest against an in-memory MongoDB, run in GitHub Actions on every push.
  5. 05Shipped with Docker Compose for local setup and deployed with the frontend on Vercel, the API on Render and data on MongoDB Atlas.

04 / Screens

Inside the product

Property search with type, price, city and bedroom filters
Property search with type, price, city and bedroom filters
Listing detail with viewing requests and owner contact
Listing detail with viewing requests and owner contact
Seller dashboard with per-listing views, saves and inquiries
Seller dashboard with per-listing views, saves and inquiries
Admin moderation for users, listings and reports
Admin moderation for users, listings and reports

Outcome

A complete, deployed marketplace

The platform is live with seeded demo accounts for every role, so the whole journey can be tried end to end: from searching and saving a property, to messaging the owner and booking a viewing, to an admin approving the listing.

Next case study

Fluks Dekor