CASE STUDY · FULL STACK
Real Estate Platform
A home-search marketplace with map-first browsing, saved-search alerts and direct messaging with listing agents.
- ROLE
- Lead developer
- TIMELINE
- 12 weeks
- TEAM
- 3 people
- PLATFORM
- Web, responsive
PRODUCT IDENTITY
haven
Find the place you'll call home.
01 · OVERVIEW
Project overview
DEVELOPMENT TIME
12 weeks
MVP to public launch
TEAM SIZE
3 people
Lead dev, designer, backend
KEY ACHIEVEMENT
48k listings
Indexed and searchable in < 300 ms
THE PROBLEM
Buyers juggled three sites, stale listings and agents who never replied. Search results ignored what mattered most to them: commute, schools and real photos.
THE APPROACH
Haven pulls MLS feeds into one index, refreshes it every 15 minutes, and makes the map the primary way to search, with saved searches that alert the moment something new matches.
48k
active listings indexed
< 300 ms
median search response
3.2x
more agent replies than email forms
02 · FEATURES
What it does
Map-first search
Draw an area or pan the map; results update live with every move.
Saved searches & alerts
Get an email or push the minute a new home matches.
Mortgage calculator
Monthly cost with taxes, insurance and HOA, right on the listing.
Agent messaging
Chat with the listing agent and book a viewing in one thread.
Tour scheduling
Pick open slots for in-person or video tours.
Seller dashboard
Views, saves and inquiries for every listing over time.
03 · PROCESS
How it was built
WEEK 1–2
Discover
Interviewed buyers and agents; audited MLS data quality.
- Journey map
- Data audit
WEEK 3–4
Design
Map + list layout, listing page and messaging flows, tested with 12 buyers.
- Figma prototype
- Design tokens
WEEK 5–10
Build
React frontend, Django API, PostGIS search and the MLS import pipeline.
- Web app
- Search index
WEEK 11–12
Ship
Load testing, SEO landing pages, then a city-by-city launch.
- Public launch
- Lighthouse 96
04 · TECH STACK
Built with
FRONTEND
- React
- TypeScript
- Mapbox GL
BACKEND
- Django
- DRF
- Celery
DATA
- PostgreSQL
- PostGIS
- Elasticsearch
INFRASTRUCTURE
- AWS S3
- CloudFront
- Docker
ARCHITECTURE
Haven web app
React + Mapbox GL
Django REST API
Search, chat, alerts
PostGIS
Listings + geo
Elasticsearch
Full-text search
MLS feeds
15-min import
05 · LEARNINGS
Challenges & learnings
Map search at scale
CHALLENGE
Rendering thousands of pins froze the map on mid-range laptops.
OUTCOME
Server-side clustering and viewport queries kept the map at 60 fps.
Stale listings
CHALLENGE
Sold homes kept appearing for days after closing.
OUTCOME
An incremental MLS import every 15 minutes with soft deletes kept results fresh.
Interested in this project?
Happy to walk through the code, the decisions behind it, or how something similar could work for your team.