Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/danizd/urbanviable/llms.txt

Use this file to discover all available pages before exploring further.

UrbanViable is a geospatial scouting platform that helps you find the best commercial locations in Galicia. Adjust sliders for income, demographic profile, commercial activity, and building characteristics — the map updates in real time at 60 fps using MapLibre GL JS GPU expressions. No server is involved in scoring.

Quickstart

Run the ETL pipeline and launch the map in a few commands.

Architecture

Understand the two-container setup and how data flows from ETL to GPU.

ETL Pipeline

Download, process, and tile four open data sources into MBTiles.

Frontend

MapLibre GL JS components, the scoring hook, and design tokens.

Deployment

Docker Compose setup for TileServer GL + Nginx on Oracle Cloud ARM.

Data Model

The 11-column tile schema that is the contract between ETL and frontend.

How It Works

1

Run the ETL pipeline

Download open data from CNIG, INE, OpenStreetMap, and Catastro. Run python etl/process_data.py to produce a normalized GeoJSON with 7 socioeconomic indicators per census section.
2

Generate vector tiles

Convert the GeoJSON to a compact MBTiles file with bash etl/generate_tiles.sh using Tippecanoe. The result is ~15–40 MB and covers zoom levels 6–14.
3

Launch the stack

Run docker compose up -d to start TileServer GL (serving .pbf tiles) and Nginx (hosting the React app and proxying tile requests).
4

Scout locations

Open the map, move the weight sliders, and watch ~3,800 census sections re-color in real time. Click any section for income, population, and activity details.

Key Features

Zero-Server Scoring

All score computation happens in MapLibre GL JS paint expressions evaluated by the client GPU. Slider changes never trigger a server request.

7 Weighted Indicators

Household income, population density, youth ratio, elderly ratio, commercial activity, building use, and building age — all normalized to [0, 1].

Open Data Sources

Built entirely on publicly available data: CNIG census geometries, INE Atlas de Renta, OpenStreetMap POIs, and Catastro building records.

Fully Containerized

Two-container Docker Compose stack (TileServer GL + Nginx) deployable on any Linux server, including Oracle Cloud Always Free ARM instances.

Build docs developers (and LLMs) love