A statewide weed dashboard that lives in one file

A complete inventory dashboard that queries the state's ArcGIS REST services live and resolves field names on the fly, so a schema change upstream does not take the page down. Clustered map, chained filters, charts, and a CSV export of anything on screen, deployable to any host with no build step and no license.

Client
Nevada noxious weed program
Period
2026
Our role
Dashboard build, ArcGIS integration
Built with
Leaflet, MarkerCluster, Chart.js

The problem

The inventory data already existed and was already authoritative, published as ArcGIS REST services. What was missing was a way to look at it that did not require a licensed dashboard product, a per-seat viewer, or a copy of the data that would start drifting the day it was made.

What we built

One HTML file. It queries the published services directly at load, holds the records in the browser, and renders a clustered map alongside charts that all read from the same filtered set. There is no server component, no build step, no database, and nothing to license. It runs from any host that can serve a static file.

The detail that keeps it alive

Field names are resolved dynamically at runtime rather than hard-coded. When the upstream service gets renamed columns or a restructured schema, the dashboard adapts instead of going blank, which is the failure mode that kills most one-off mapping pages within a season.

How it works

Live query, no copy

Records come from the state's own services on every load, paged to handle up to several thousand features. What the dashboard shows is what the program's authoritative layer says right now.

Clustered map

Up to 8,000 points cluster at zoomed-out scales and separate as you move in, so a statewide view stays readable and a county view stays precise.

Seven filters, chained

Species, location, and status filters narrow together, and every chart and the map redraw against the same filtered set. There is no state where the chart and the map disagree.

CSV export of what you see

Whatever the filters currently show exports to CSV. That single feature is what turns the dashboard into the first step of the annual report instead of a thing to look at and then go rebuild in a spreadsheet.

What it changed

The program got the views it wanted, owns the code outright, pays nothing per seat, and can hand the file to anyone. It also got a template: the same approach scales up to a self-hosted build on PostGIS with MapLibre GL when a program outgrows the single-file version.

8,000Records handled in a single view
7Chained filter controls
0Per-seat license cost
1File to deploy anywhere
LeafletMarkerClusterChart.jsArcGIS RESTVanilla JS
Get in touch

Tell us what the ground looks like.

A few sentences about the program, the data you already have, and the deadline you are working against is enough to start. You will hear back from the person who would do the work.

What happens next
First

A real reply, not a ticket number

Usually within one business day, from the person who would build it.

Then

A short call about the data

What exists, where it lives, and who has to use the result.

After that

Scope and a fixed number

Written scope with the cuts called out, so the budget decision is yours.