Interactive Demo

Rotate your device to landscape mode to view the interactive demo

Built withReact, TypeScript, GitHub API, YAML, OpenStreetMap
RoleDesign, Development, System Architecture

I'm a photojournalist. I've spent years documenting communities and social movements across the country, and one thing you learn quickly is how much information doesn't travel. How fast a situation can escalate because people three blocks away had no idea what was happening.

OpenWatch is a tool for real-time community reporting on law enforcement activity: police deployments, ICE operations, checkpoints, public demonstrations. Reports go into a public database the moment they're submitted. No editorial layer, no delay, no gatekeeping.

The Architecture Is the Product

Anyone can submit a report in any of 14 languages. A single sentence when there's no time, or a full account when there is. The system extracts structured data: location, counts, tags, context. The original text is discarded. What gets saved is anonymized YAML, committed directly to a public GitHub repo.

No cookies. No analytics. API requests are proxied so IP addresses never reach third parties. Server logs are deleted automatically every hour.

There's nothing to subpoena. That's not a legal disclaimer. It's a design constraint I built the entire system around. If the data doesn't exist, it can't be handed over.

The full dataset is CC BY 4.0. Download it, fork it, build on it. It's version-controlled, so it's as close to tamper-proof as a public dataset gets. I'm covering the infrastructure costs out of pocket because it still feels necessary.