pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
Translation pending
Asheville, NC land-value map (land.avlgo.com): a deployment of the Center for Land Economics' Civic Mapper
DataPython · TypeScriptGitHub @MattB543OnlineOwner unconfirmed
Have you tried it? One tap is enough. No sign-in needed.
No updates detected yet. GitHub releases will appear here.
Owners of public repositories under a personal GitHub account can sign in to verify ownership and manage the introduction themselves. No administrator approval is needed.
Sign in, generate a verification file, and commit it to this repository’s default branch within 30 minutes. Files on other branches or forks do not count. Then check the file below to manage the project without administrator approval. Keep the file to retain your access.
If needed, you will go to sign-in. After signing in, return here and press your chosen verification button again.
Run /nomorevibe verify in your project folder to verify ownership and manage the introduction yourself.
Verify in one minuteAsk about other verification options
Loading the full README. The saved excerpt is shown below.
Live at land.avlgo.com, part of AVL GO.
This is an Asheville, NC deployment of Civic Mapper by the
Center for Land Economics
(upstream repo, MIT licence, kept in
LICENSE). It adds:Read the full README ↗Live at land.avlgo.com, part of AVL GO.
This is an Asheville, NC deployment of Civic Mapper by the Center for Land Economics (upstream repo, MIT licence, kept in LICENSE). It adds:
data/jurisidictions/run_asheville.py builds the city's parcels from Buncombe
County's public parcel layer (2026 tax-year values, which still use the 2021 reappraisal).
Values are served as PMTiles from Vercel Blob./review): parcels whose records look wrong, and the biggest
underused land. It's built by data/scripts/build_review_feed.py.docs/avlgo-style-guide.md), with the site limited to Asheville.General fixes found along the way are offered back upstream. Everything below is the upstream Civic Mapper README.
Interactive 3D maps of parcel-level property data — land value, improvement value, value per acre, improvement-to-land ratio, surface parking, and more — for cities across the US and beyond.
Live site: civicmapper.org
Maintained by the Center for Land Economics.
Each city's parcel data is cleaned and exported to GeoParquet by a Python ETL notebook or script. Larger cities also get PMTiles vector tiles (with an H3 hexagon overlay) so they render at any scale. The frontend loads these files over HTTP and renders them with MapLibre GL; a small Express proxy serves the files with CORS and rate limiting in deployed environments.
| Path | What it is |
|---|---|
viz/ | The map frontend (Vite + MapLibre). See viz/README.md |
api/ | Express data proxy. See api/README.md |
data/ | Per-city ETL notebooks, shared Python utilities, post-processing scripts. See data/README.md |
docs/ | Design docs and playbooks (add a city, parquet format, …) |
scripts/ | Repo-level utilities (e.g. headless smoke test of every deployed city) |
site/ | Static landing page for civicmapper.org |
.github/ | CI/CD workflows (deploy, ETL runs, smoke tests) |
Prerequisites: Node 20+ (frontend/API), Python 3.11+ (only needed for the ETL side).
The one-shot way — starts the API on port 8080 and the Vite dev server on port 5173, installing dependencies on first run:
./start-local.sh # macOS / Linux
start-local.bat # Windows (opens two terminal windows)
Or manually:
# Terminal 1 — API (optional for local dev; the frontend has its own dev proxy)
cd api
npm install
npm start # http://localhost:8080
# Terminal 2 — frontend
cd viz
npm install
npm run dev # http://localhost:5173
Open http://localhost:5173 — it takes you to the city picker
(cities.html); each city opens as app.html?city=<key>.
No environment variables are required for a basic local run: in dev mode the Vite server proxies dataset requests to a hosted data endpoint, so cities load out of the box. To run against your own data, either:
<city>-<state>-parcels.parquet file into viz/public/ — in dev the
app prefers a local copy of the current city's file when one exists, orVITE_PARQUET_BASE_URL (and friends — see
viz/README.md) at your own parquet/PMTiles hosting.For the ETL side (producing those parquet/PMTiles files yourself), follow data/README.md.
The end-to-end procedure — sourcing parcel data, ETL, PMTiles, frontend registration, deployment — is documented in docs/add-city-playbook.md. The required output format is specified in docs/parcel-parquet-format.md.
Want a city but don't want to build it? Open a city request issue.
Civic Mapper works like a library: the engine is generic, and a deployment is the engine plus configuration pointing at your data hosting. To stand up your own instance:
VITE_PARQUET_BASE_URL (and friends;
the full list with docs is in
viz/env/.env.example). ETL-side variables are in
data/.env.example. Secrets never live in this repo —
deployments supply them via environment / CI secrets.viz/src/cities/<key>.json + viz/src/dictionaries/<key>.json; no shared
files to edit..github/workflows/ are the maintainers'
deploy pipelines and are guarded by repository owner, so they skip
automatically on forks (no failing runs). Copy one as a starting point for
your own target and supply your own repository secrets.Parcel and assessment data come from each jurisdiction's open-data programs. Per-source licenses and credits are listed in ATTRIBUTION.md.
See CONTRIBUTING.md. Security reports: see SECURITY.md.
MIT.