Domapus is a website that visualizes U.S. housing market data at the ZIP-code level.
Visualize median price, inventory, and sales trends nationwide. Hover over a ZIP code to show value.
Click on a ZIP code to access detailed market data.
Compare two ZIP codes side-by-side to evaluate relative market performance across all available metrics.
Generate report-ready maps with customizations.
-
Clone the repository
git clone https://github.com/jasperwchen/Domapus.git cd Domapus -
Install dependencies
npm install
-
Start the development server
npm run dev
-
Open your browser
Navigate to
http://localhost:3677.
| Layer | Technologies |
|---|---|
| Frontend | React 18, TypeScript, Vite |
| UI | Tailwind CSS, Radix UI, shadcn/ui, Lucide |
| Map | MapLibre GL JS, PMTiles, Turf |
| Export | Canvas 2D, jsPDF |
| Data Pipeline | Python 3.14, NumPy, SciPy, PyArrow |
| Deployment | GitHub Pages, GitHub Actions |
Eight metrics colour the map. The rest appear in the detail panel and the comparison view for the selected ZIP.
| Metric | Source | Choropleth map |
|---|---|---|
| Zillow Home Value Index | Zillow | Yes |
| Median Sale Price | Redfin | Yes |
| Median Price per Sq Ft | Redfin | Yes |
| Homes Sold | Redfin | Yes |
| Active Listings | Redfin | Yes |
| Median Days on Market | Redfin | Yes |
| % Sold Above List | Redfin | Yes |
| Months of Supply | Redfin | Yes |
| Median New Listing Price | Redfin | No |
| Median Listing Price per Sq Ft | Redfin | No |
| New Listings | Redfin | No |
| Pending Sales | Redfin | No |
| Inventory | Redfin | No |
| Sale-to-List Ratio | Redfin | No |
| % Off Market in 2 Weeks | Redfin | No |
Data sources: Redfin Data Center, Zillow Research.
See the Methodology page for details on color scaling, sample-size thresholds, and the one-year forecast model.
A Python pipeline runs monthly via GitHub Actions. It downloads the latest Redfin and Zillow files, computes all statistics, and writes a set of static files that the site consumes at runtime. Releases are rejected if month-over-month changes exceed thresholds that would indicate a broken upstream file.
To run the pipeline locally (requires Python 3.14):
pip install -r requirements.txt
python -m pipeline| Path | Contents |
|---|---|
src/ |
React application |
pipeline/ |
Monthly data pipeline |
public/data/ |
Published data files used by site |
scripts/ |
Build, palette, and geometry maintenance scripts |
tests/ |
Pipeline tests |
bench/ |
Performance benchmarks |
See full file listings in tree.txt.
Data reflects monthly aggregates published by Redfin and Zillow, with a typical lag of several weeks. Redfin only reports ZIP codes with market activity, so rural ZIPs with few sales may show "N/A". ZIPs with low transaction volume produce noisy medians; these are flagged as low-confidence and excluded from color-scale calibration, though they remain visible on the map.
-
Fork the repository and create a feature branch.
-
Enable the repo hooks:
git config core.hooksPath .githooks. -
Verify your changes before opening a PR:
npm run lint npm test npm run build pytest # only if pipeline/ was modified
-
Push your branch and open a Pull Request.
Licensed under the Apache License 2.0. See LICENSE.md.
Report bugs or request features via GitHub Issues, or contact the maintainer at jasperc.wk@gmail.com.
If you find Domapus useful, consider supporting its development:



