Skip to content

Architecture

RustGIS is a layered Cargo workspace. Lower layers never depend on the UI, which keeps the engine scriptable and the front end swappable.

Layer Crate Job
L0 rustgis-geom Coordinates, extents, Web Mercator, geodesic distance/area, scale
L1 rustgis-data Features and typed attributes; GeoJSON, CSV, Shapefile; SQL where clauses
L2 rustgis-map, rustgis-analysis Layers, symbology, labeling, camera, basemaps; geoprocessing tools
L3 rustgis-render tiny-skia renderer, label placement, PNG export
L4 rustgis-engine Session, undo, command registry, feature catalog, sample project
L6 rustgis-ui-egui The ribbon front end
apps rustgis, rustgis-cli, rustgis-web Desktop app, command line, browser (WebAssembly)

Everything is a command

Each user-visible action is a CommandSpec with an id, label, ribbon location, shortcut, parameter description, an enabled check and a run function. The ribbon, keyboard shortcuts, command search and CLI all dispatch through Session::run, which also snapshots the project for undo and restores it if a command fails.

Never crash

Production code avoids unwrap, expect and panics, and treats file contents and command parameters as hostile. Tests run every command and every geoprocessing tool with junk parameters.

Quality gates

cargo xtask ci        # fmt, clippy -D warnings, tests, layering check
cargo xtask parity    # regenerate the feature coverage report