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-dev.txt # or requirements.txt for the pipeline alone
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.
Domapus combines dom, meaning house, map, and us, meaning the United States.
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:



