Introducing FastGIS: GRASS GIS, finally in your browser
If you've ever used GRASS GIS, you know it's one of the most powerful spatial analysis platforms ever built. Decades of algorithms, impeccable accuracy, a passionate community. You also know that getting it installed, configured, and running on a new machine can be a bit of an adventure — and sharing your work with a colleague who doesn't have GRASS set up? That's a whole afternoon gone.
FastGIS started as a personal itch-scratcher for exactly that problem.
The idea
The core premise is simple: what if you could open a browser tab, point it at a GRASS environment, run r.slope.aspect, and see the result draped over a 3-D globe — without installing anything locally?
That's it. No desktop app, no remote desktop, no "works on my machine". Just a URL and an API token.
What it looks like in practice
You open the GRASS Runner, connect to a server running your GRASS database, pick a location and mapset, and you're in. From there you can:
- Run any GRASS module through a generated form — type
r.watershed, hit Load, fill in the fields, and watch the output stream back live in a terminal panel - See results immediately on a CesiumJS 3-D globe — raster outputs appear as WMS layers the moment a module finishes
- Draw directly on the map — set the computational region by dragging a bounding box, trace an elevation profile across a ridge, draw a histogram bounding box around a glacier
- Manage layers like you'd expect — drag to reorder, toggle visibility, adjust opacity, expand a legend, zoom to extent
The whole thing runs in the browser. Your GRASS data stays on the server. Your laptop just needs a web connection.
A few things we're especially happy with
The profile tool
Click the profile button, draw a line across a mountain range by clicking waypoints on the globe, double-click to finish — and a chart of the elevation profile appears below the map in about a second. The transect line stays on the globe while you work. You can change the input raster and re-run without redrawing the line.
It's powered by r.profile under the hood, but from the user's perspective it's just "draw a line, get a chart."
Session persistence
This one took some thought to get right. When you navigate away from the page and come back, everything is where you left it — the camera angle, the layers, the drawn transect, the histogram chart. No "please re-run your analysis." We call it autosave, and it's invisible by design.
You can also save named workspaces and load them on a different device or share them with a colleague. The state is stored server-side so it survives browser restarts.
The layer manager
Layers have drag-and-drop reordering, inline opacity sliders, vector style controls (colour, line width, transparency), WMS legend panels, and group support. It sounds like a small thing, but being able to organise a dozen layers without hunting through a settings menu is genuinely nice to use.
The stack, in brief
FastGIS is built on FastAPI at the back end, which proxies GRASS module execution and streams output over Server-Sent Events. Map tiles come from MapServer via WMS/WFS. The front end is plain ES modules — no build step, no framework — around a CesiumJS globe. It's deliberately lightweight.
What's next
There's a lot more on the list. The identifier tool (click the map, get r.what/v.what values for all active layers). Better session UI. More robust environment management. And eventually, letting users draw and export vector data directly from the browser.
But the core loop — connect, run a module, see the result on a map, save your work — is solid and in use.
If you want to try it, the Quick Start guide gets you running in a few minutes. If you find a bug or have an idea, open an issue. And if you know someone who spends too much time wishing GRASS had a web UI, send them the link.
