Nicholas Sokol
← All projects
GISWeb DevelopmentApplication DevelopmentTeaching Tools

Cartolith — Data & GIS Exploration Platform

A browser-based GIS and data-analysis tool built to teach spatial thinking, not just perform it — 31 geoprocessing tools, a SQL lab, and a visual lineage graph, packaged as a native desktop app for Windows, macOS, and Linux.

Cartolith is a full spatial-analysis environment built around a specific idea: datasets, not map layers, are the unit everything operates on, and every operation should be explainable to someone who has never used GIS before. It runs as a FastAPI backend with a React frontend, and ships as a real double-click desktop application via an automated cross-platform build pipeline — no Python environment for the end user to manage.

Geoprocessing. Thirty-one tools across six categories, each with a plain-English explainer: vector operations (buffer, centroids, convex hull, dissolve, spatial join — buffers computed in each feature's own local equidistant projection, so they're accurate anywhere on Earth), overlay (clip, intersect, difference, union), raster (hillshade, slope, aspect, NDVI/NDWI/EVI, reprojection, zonal statistics), grids (Voronoi, Delaunay, H3 hex binning), and straight-line network analysis (OD cost matrices, service areas — honestly labeled as straight-line rather than true drive-time, since that would require a routing engine this tool doesn't bundle).

SQL Lab. Every dataset is queryable through DuckDB — filters, joins, spatial ST_ functions, with results savable back as new datasets that flow into every other tab.

Lineage, not just layers. Every derived dataset carries a visible provenance trail — a live dependency graph showing exactly which source and which operation produced it, with one-click re-run.

Built to teach. A ~30-concept plain-English GIS glossary, contextual explainers on every tool, one-click sample datasets, and a guided first-map walkthrough.

What it does

  • Loads shapefiles, GeoJSON, CSV, and raster formats — locally, or streamed directly from a URL
  • Runs 31 geoprocessing tools with a lineage-tracked, re-runnable pipeline
  • Full project save/load to a single portable .cartolith.json file, geometry included
  • Ships as a native installer for Windows, macOS, and Linux via GitHub Actions

Engineering notes

  • FastAPI + GeoPandas/rasterio backend, React frontend, DuckDB for the SQL layer
  • Cross-platform desktop builds via a single GitHub Actions pipeline (PyInstaller-based)
  • Honest about scope: network tools are straight-line by design; a MapLibre/vector-tile engine swap and true road-network routing are documented as deliberate next steps rather than silently missing features