Architecture

How the geospatial portfolio stack runs together.

The repos tell one system story in plain English: incoming data is checked, imagery can be processed into GIS-ready detections, accepted layers are loaded into spatial services, map clients are refreshed, and assistant tools operate through reviewed, explainable map actions.

Development Mode

Host-run app with optional integration services.

This is the easiest local development path. The Status Board runs from the Grails project on the host and uses H2 by default. PostGIS, GeoServer, GeoAI, Data Gateway, OpenClaw, and MCP services are optional services that are started only when that part of the workflow is being tested.

Development mode network diagram for the geospatial project stack.
Development mode separates the required first-run path from the optional services used for spatial publication, GeoAI processing, data refresh, and assistant tooling.

Docker Mode

Containerized service stacks with published local ports.

The Docker story is service-oriented: the Status Board compose stack owns PostGIS, GeoServer, optional GeoAI, and OpenClaw gateway services; the Data Gateway compose stack owns its API, worker, and database; and MCP services run as Docker-ready stdio tools. This keeps each repo independently runnable while showing how the pieces can be composed.

Docker mode network diagram for the geospatial project stack.
Docker mode exposes the real compose boundaries and ports. Port 5432 can only be owned by one compose stack at a time unless the environment changes the published port.

System Flow

How the stack works.

The goal is not to show isolated repos. The portfolio explains the decisions needed to move from customer data to a functioning operational map: data checks first, spatial services second, live map review third, and assistant support only through clear action boundaries.

Validate and score incoming GeoJSON, CSV, GeoPackage, Shapefile, and GeoTIFF data. Load accepted spatial data into PostGIS and publish or refresh map layers. Run GeoAI workflows that produce GeoPackage/PostGIS-ready detections. Visualize incidents, assets, weather, GeoAI detections, and MGRS in a shared MapLibre map. Use MCP tools to enrich selected map coordinates with place context and incident risk analysis.