chrono.city
An archived prototype that ran live urban analytics for anywhere on the planet entirely inside one browser tab, with no server in the loop, computed from open global data.
- Period
- 2025–present
- Role
- Founder and full-stack developer
- Scale
- Global urban data
- Context
- Product, Research
- I1Overture GeoParquet
- I2PMTiles
- O1Local spatial query
- O2Browser-native urban analytics
Founder and full-stack developer
- Client-side analysis of Overture GeoParquet (2026-01-21 release) pulled from the AWS Open Data S3 bucket, deployed as a static site with no API keys and no per-query cost.
- Network-based 5, 10 and 15 minute isochrones from a custom Web Worker Dijkstra over Overture transportation, driven by a documented per-road-class walk-speed model.
- A documented metric catalogue with academic references (Ground Space Index and Floor Space Index after Berghauser Pont and Haupt, 2010) and per-chapter marimo research notebooks covering urban fabric, land use, amenities, street network, composite scores and isochrones.
- Open-source implementation with architecture, data-strategy and tech-decision documents recording the reasoning behind each choice.
The public chrono.city domain has since lapsed, so this stands as an archived prototype rather than a live service. No backend never meant no infrastructure: it still depended on public Overture data and content delivery networks. A later iteration migrated the analytics path to a hosted CARTO and BigQuery backend with deck.gl, trading pure client-side purity for query scale, so the zero-backend property belongs specifically to the archived browser-native phase described here.
Reading a city's urban fabric, its building density, street network and what you can reach on foot, normally needs GIS specialists, licensed desktop software, curated local datasets and a server to hold and query them; that gate keeps planners, community groups and students out of questions they could otherwise answer for their own streets. The task was to compute urban morphology and walkability for anywhere on the planet from open global data, with no backend to fund or maintain, inside the memory, network and compute budget of a single browser tab.
My contribution
I designed and built a client-only system. DuckDB-WASM (around 15MB) loaded in the browser queried Overture Maps' hive-partitioned GeoParquet directly from the public AWS Open Data S3 bucket (the 2026-01-21 release), using predicate pushdown and bounding-box filters so only the relevant partitions ever downloaded. MapLibre GL rendered Overture PMTiles (buildings, transportation, places, base) as serverless vector tiles, and I wrote a custom Dijkstra isochrone in a Web Worker that built a walking graph from Overture transportation segments and connectors, weighting each edge by a per-road-class speed model (footways at 1.39 m/s down to motorways at zero) and fractional lengths from the connectors' linear-referencing positions, producing 5, 10 and 15 minute reachability polygons. Morphology and walkability metrics ran client-side over the raw features, and an IndexedDB plus in-memory LRU cache with a 3x3 viewport prefetch grid kept panning responsive across sessions.
Decisions and constraints
Decisions I made
- Query hive-partitioned GeoParquet directly with DuckDB-WASM rather than stand up a PostGIS backend, accepting a roughly 15MB engine download as the honest price of a zero-backend architecture anyone can host for free.
- Split the work across browser primitives so heavy computation never blocks the map: MapLibre and PMTiles for rendering, DuckDB-WASM for analytics, a Web Worker for the Dijkstra isochrone.
- Model walkability on the real street graph, per-road-class speeds and connector linear-referencing, instead of a naive radius buffer, so reachability reflects how people actually move.
- Prefetch a 3x3 viewport grid into IndexedDB so exploration stayed instant and got faster with use, rather than refetching on every pan.
Operating constraint
Everything had to run inside one browser tab, its memory, network and compute, while querying global cloud-native datasets, with no application server to offload work to and no per-query cost.
Claim boundary: The public chrono.city domain has since lapsed, so this stands as an archived prototype rather than a live service. No backend never meant no infrastructure: it still depended on public Overture data and content delivery networks. A later iteration migrated the analytics path to a hosted CARTO and BigQuery backend with deck.gl, trading pure client-side purity for query scale, so the zero-backend property belongs specifically to the archived browser-native phase described here.
Evidence
- Client-side analysis of Overture GeoParquet (2026-01-21 release) pulled from the AWS Open Data S3 bucket, deployed as a static site with no API keys and no per-query cost.
- Network-based 5, 10 and 15 minute isochrones from a custom Web Worker Dijkstra over Overture transportation, driven by a documented per-road-class walk-speed model.
- A documented metric catalogue with academic references (Ground Space Index and Floor Space Index after Berghauser Pont and Haupt, 2010) and per-chapter marimo research notebooks covering urban fabric, land use, amenities, street network, composite scores and isochrones.
- Open-source implementation with architecture, data-strategy and tech-decision documents recording the reasoning behind each choice.