A Civic Accountability Dashboard for Norfolk's Green Plan
March 29, 2026
Norfolk adopted a Green Infrastructure Plan in 2018. The plan includes specific numerical commitments: 5,200 tree plantings per year, canopy coverage targets, stormwater management milestones. Eight years later, nobody was publicly tracking compliance. green-norfolk does.
The stack is minimal: a single HTML file, a Netlify Edge Function proxy to solve CORS on the city's Socrata data API, and a GitHub Actions pipeline that fetches data daily and commits a JSON snapshot. The dashboard reads the snapshot first and falls back to the live API. No framework, no database, no build step beyond what Netlify provides.
The CORS problem was the most annoying part. data.norfolk.gov returns CORS headers that block direct browser requests. The Edge Function proxies requests server-side; the client never touches the Norfolk API directly. It's a one-file proxy that took about twenty minutes to write and completely unblocked the project.
The finding that surprised me most: the city's forestry work orders from 2020–2025 show a 9.9:1 ratio of tree removals to plantings. The GIP requires 5,200 plantings per year. The city appears to be hitting somewhere between 78 and 160. The canopy coverage map hasn't been updated since 2022, which means the baseline against which progress should be measured is itself three years stale.
None of this is a scandal. Cities underfund green infrastructure commitments constantly, and Norfolk is dealing with serious flooding pressure that consumes budget. But the numbers should be public and visible, and now they are.