+ Reflection
I built this in 2021.
I rebuilt it in 2026 because I was curious if anything changed.
The first version was a student project. Vue 2 era. Vue CLI, Vuex, jQuery still hanging around. Data was a one-time export I couldn't update.
Five years later I came back, gutted the build (Vite, Pinia, ESM, mobile-first responsive, properly typed stores) and rewrote the data pipeline so it pulls current records from NYC Open Data on demand. Same project, current numbers, runs on a phone. The findings shifted in interesting ways — Manhattan stayed dominant, Fire Hydrant stayed #1 in three boroughs, but the average ticket cost rose. Fine schedules updated in 2023.
So. Is street parking really free?
It is not.
And yet I'm still parking on the street. Some answers don't change behavior — they just give you better metaphors.
Built with Vue 3 · Vite · Pinia · Mapbox GL · Three.js · D3.
Data: NYC Open Data — Parking Violations Issued FY2021 → FY2026 · DOF Parking Violation Codes.
GitHub ↗ · The original 2021 version ↗