UrbanPulseReal-Time City Intelligence Platform
A data platform that turns fragmented public mobility, weather and environmental feeds into a coherent real-time view of the city.
Explore the architectureA clearer view
of the city.
Illustrative index
Cities generate signals. Pipelines give them context.
Weather, mobility and modeled air feeds describe the same place, but arrive with different schemas, clocks and locations. UrbanPulse turns those signals into a traceable city view.
One city. Many signals. One data model.
Python adapters retain raw payloads before normalization. Kafka and Airflow support streaming and scheduled paths in the optional platform stack; dbt defines the marts that power bounded API responses.
From raw event to useful signal.
A GBFS station update becomes a historical snapshot, then a queryable measure of availability. The same pattern brings weather and modeled air data into consistent facts and dimensions.
air quality measurements
mobility station snapshots
environment hourly
mobility hourly
The city becomes the interface.
The built app uses a fixed, labeled demo dataset by default. Maps and focused metrics make its infrastructure approachable; on mobile, station details move into a touch-friendly sheet over the map.


Replay makes time visible.
City Replay steps through historical snapshots so changing station availability, air conditions and weather can be explored together. Try the timeline or select a map layer and location below.
Watch the city change.
Show the state behind the metric.
Freshness, job health and quality checks belong beside the analytics. A reader should be able to trace what they see from API response back to its source.
mobility_freshness_within_thresholdPASSstation_id_unique_per_snapshotPASSstation_capacity_consistentPASSmobility_timestamp_not_nullPASS- 01Open-Meteo
- 02raw_events
- 03stg_weather
- 04fct_weather_hourly
- 05mart_city_hourly
- 06FastAPI
- 07UrbanPulse
Engineering decisions
The stack is organized around reproducible data and small, explainable product responses. Docker keeps local services consistent; Airflow coordinates batch work alongside Kafka streams.
PostgreSQL + PostGIS
Relational analytics and spatial queries share one database.
dbt
Metric logic is versioned and tested before it reaches the interface.
Kafka + raw retention
Events and original payloads remain available for replay and debugging.
Server-side aggregation
FastAPI sends bounded results instead of raw datasets to the browser.
Data engineering, all the way to the interface.
UrbanPulse carries ingestion, modeling and reliability into a product people can explore. The project runs locally with transparent demo data; public deployment is the next step.
Explore more projects

