https://github.com/ivorforce/wohnortatlas
Source code for wohnortatlas.de, a website that scores personalized liveability across germany
https://github.com/ivorforce/wohnortatlas
data-visualization deckgl geospatial germany gtfs h3 housing interactive-map liveability maplibre open-data openstreetmap python quality-of-life
Last synced: about 7 hours ago
JSON representation
Source code for wohnortatlas.de, a website that scores personalized liveability across germany
- Host: GitHub
- URL: https://github.com/ivorforce/wohnortatlas
- Owner: Ivorforce
- License: other
- Created: 2026-06-21T23:09:11.000Z (15 days ago)
- Default Branch: main
- Last Pushed: 2026-06-28T14:00:05.000Z (8 days ago)
- Last Synced: 2026-06-28T16:03:23.998Z (8 days ago)
- Topics: data-visualization, deckgl, geospatial, germany, gtfs, h3, housing, interactive-map, liveability, maplibre, open-data, openstreetmap, python, quality-of-life
- Language: HTML
- Homepage: https://wohnortatlas.de
- Size: 2.77 MB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# Deutscher Wohnortatlas
A Germany-wide livability map. **→ [wohnortatlas.de](https://wohnortatlas.de)**
The pipeline scores H3 (resolution 8) hexes across the German mainland on a few
dozen livability layers — rent, commute, daily-needs access, leisure, quiet,
green, flood risk, and more. The static web map then re-scores everything
**client-side** against a user's own preferences. What each layer
measures, how, and where it falls short is documented on the site's
[method page](https://wohnortatlas.de/method.html).
## Repository layout
| Path | What |
| --- | --- |
| `scripts/` | the pipeline — numbered `NN_*.py` stages, run in order by the Makefile |
| `wohnen/` | shared library code (config, I/O, routing, scoring helpers) |
| `web/` | the static map (`index.html` + `decode.js`, no build step) and its assets |
| `Makefile` | build targets with file-based caching |
The input data (`data/`), the built map bundle (`web/data.bin`), and the routing
caches (`web/reach/`) are **not** tracked — they are downloaded and generated by
the build. A clone is the source, not a ready-to-serve site.
## Build / reproduce
Prerequisites (developed on macOS; the Makefile assumes Homebrew):
- [Poetry](https://python-poetry.org/) (Python ≥ 3.12)
- `osmium-tool` and `openjdk@21` — the routing (r5py) needs JDK 21
(`brew install osmium-tool openjdk@21`)
- ~25 GB free disk for the raw downloads and intermediate layers
```sh
poetry install
make check-env # verifies osmium, JDK 21, and the Python deps
make download # fetches the open datasets (large; cached under data/raw/)
make web # runs the full pipeline → web/data.bin
```
Then serve the `web/` directory over HTTP and open it — it fetches `data.bin`, so
it will **not** work from a `file://` URL:
```sh
cd web && python3 -m http.server # → http://localhost:8000
```
The job-market ("Branche") commute targets are optional and need a free
[regionalstatistik.de](https://www.regionalstatistik.de/) account: set
`GENESIS_USER` / `GENESIS_PASS`, then `make jobs && make web`.
Gotcha worth knowing:
- The free **GTFS feed expires ~7 days** after download; an expired feed makes the
router silently fall back to walk/bike times. `make freshness` shows the age;
re-`make download` and rerun the routing stages to refresh.
## License
The project's own code is [MIT](LICENSE). The bundled browser libraries, the map
and geocoding services used at runtime, and the input datasets each keep their own
licenses — see [THIRD-PARTY-LICENSES.md](THIRD-PARTY-LICENSES.md) and the sources
list on the [method page](https://wohnortatlas.de/method.html).
Contributions are welcome where they fit the project.