I've been frustrated by the media coverage of the protests since February - first the lack of it, then the overemphasis on inevitable flashpoints. It all misses the point that it's a broad, organic, mostly peaceful, and increasingly growing movement.
Recently I ran across a great data source from an individual backed by a hard working team of 20 volunteers, We (the People) Dissent. They've been building a Google Sheet, tracking event locations from multiple sources with source links. Which inspired this interactive map - it attempts to illustrate where protests are happening across the country, how they're growing over time, and at least to some degree how they span the political spectrum. (The map sadly doesn't (yet) include crowd counts.)
It's still a work in progress, and any feedback would be greatly appreciated!
For the technically curious, the repo is here: https://github.com/concerned-us-citizen/protest-map
With the help of GitHub Actions and Pages, it's built without a hosting server. A daily action scrapes/sanitizes the google sheet, synthesizes 2024 precinct voting data from the NY Times using RTree, geocodes locations with Nominatim, pulls city data from Wikidata, then generates a sqlite database. This is then wrapped in a Sveltekit static website.
A few technical shoutouts:
sql.js - sqlite in the browser has been a great experience for a read only, small-ish data set. The combined data size of the WASM/js and the .sqlite file is currently a bit over 1.1Mb. Any performance issues you see on heavier days (like 6/14) are the result of map marker generation, not sql - the intent was to keep cluster sizes small to visually emphasize the volume, and that makes the map more sluggish.
Svelte/Sveltekit/Vite - while it's only a single page app, this stack has been a refreshing delight, both for development and configuration. Turn key, highly extensible, very few surprises, easy to understand and debug, love the dynamic dependency model.
joshum97•5h ago