All workPublic safety data

Turning California crash records into an interactive safety map

Free maps and more than 1,500 statically built pages of California crash data for people walking, cycling and riding motorcycles, built from the state’s CCRS records, federal FARS data and OpenStreetMap.

Client
Safe Streets Map (own product)
Role
Founder and sole engineer
Built with
Next.js, React, Mapbox GL, Three.js, Postgres, Tailwind CSS
Integrations
CCRS (data.ca.gov), NHTSA FARS, OpenStreetMap, National Weather Service, Caltrans
Safe Streets Map (own product) screenshot

(01)The problem

California publishes detailed collision records, but as bulk datasets that are practically unusable for a rider or driver who just wants to know which roads are dangerous. The data needed to be cleaned, joined, and put on a map someone could actually read.

(02)The approach

  1. 01

    Data pipeline from public records

    Node build scripts turn CCRS crash records and FARS fatal-crash data into compact JSON files, and flag cities whose police reports mostly lack map locations, so undercounted places are labelled rather than shown as quiet.

  2. 02

    A map people can use

    Mapbox GL maps for walking, cycling and motorcycling, with crash hotspots, filters, custom vector tilesets, and live weather and road-closure layers from NWS and Caltrans.

  3. 03

    A product, built and run end to end

    Designed, built and run as my own product: walking, cycling and motorcycling maps, a ride planner with weather and road conditions, a tool that checks a GPX or FIT ride against crash records entirely in the browser, admin tools for reviewing community rides, and a physics-based 3D riding simulator.

  4. 04

    Pages that answer searches

    Every city, busy street and car-crash statistic gets its own static page, built at build time from the same data, so the numbers are in the HTML that search engines and AI assistants read. Sitemap, structured data and llms.txt are generated from those files too.

(Next step)

Have work AI should be doing? Let’s map it out.

Start with a free 30-minute call: what you want connected, automated or found, and the smallest first step worth paying for.