A Mapbox map that reads a rail network the way a dashboard reads a P&L: toggleable layers, station search, line detail, KPIs that follow the current filter.

The context

A rail network is not a list: it is a graph — stations, lines, connections, works, incidents. In a spreadsheet or a PDF, nobody sees where things sit, or what overlaps. The job was not a decorative map, but a reading tool: zoom without losing sharpness, switch a layer on or off (stations, lines, works), find a station, and understand in one second what is filtered. Mapbox is the right engine here: vector tiles, a controlled style, business layers in GeoJSON on top of the basemap, performance at every zoom level.

What we delivered

  • A dedicated Mapbox GL JS map on vector tiles — sharp from the national view down to the platform
  • Independent business layers in GeoJSON: lines, stations, works, points of interest, each toggled without a reload
  • Search and fly-to a station or a line, with a detail panel (name, connections, status)
  • Cross filters (region, line type, status) that recompute both the map and the KPI strip
  • Dashboard strip: visible stations, active lines, works alerts — always aligned with the current view
  • An API serving geographic objects; the map only knows layers, not SNCF-specific hard-coding
  • A standalone map component: the same engine serves another organisation, another network, other layers, without rewriting the app

The bricks — reusable on your business

This is not a closed product. Each brick comes off the shelf: a Mapbox map for a branch network, a KPI dashboard for a sales cockpit, OCR for invoices or claim files, an assistant to query an e-commerce catalogue.

Mapbox cartographyVector tiles, style, GeoJSON layers, clustering. The same brick maps a fleet, branches or worksites.
Geographic searchGeocoding and fly-to: find a point, a line, a site, then open its record.
Map-linked dashboardKPIs recomputed on the viewport and filters — the same pattern as a sales or ops cockpit.
Geo data APIThe business (lines, stations, alerts) arrives as JSON. You change the source, not the map.
Layer automationWorks or incidents update from a feed, without republishing a static map.
Assistant / chatbot (available brick)The same brick as on an e-commerce site: query the network in natural language.

Outcomes

  • The network is read on a single map, not across a pile of files
  • A layer toggles without a reload, including at the tightest zoom
  • Searching for a station opens its detail and centres the view
  • The strip indicators stay consistent with the applied filter
  • The mapping engine is a brick: other layers or another business plug into it

Tech stack

Mapbox GL JS · React · TypeScript · GeoJSON · Vector tiles · API REST · PostgreSQL · Google Cloud Run