footPrint — GIS Home Planner

Sovereign GIS home planning tool — LIVE at footprint.primals.eco. 478 TS tests, 10 GIS upstream sources via songBird drawbridge proxy.

Live LIVE at footprint.primals.eco (200, 216ms WAN). Code complete: 466 tests, responsive design, accessibility, CSP + security headers.


What It Is

A sovereign GIS home planning tool. Load satellite imagery, draw property boundaries, place structures, calculate areas and distances, save projects — all running on your hardware with no cloud account, no API key, no data harvesting. Your property plans stay on your machine.

footPrint is the first protist — a composition that lives in the protoKarya organization, consuming ecoPrimals infrastructure via drawbridge routing rather than source coupling.


Live Surfaces

SurfaceURLStatus
Static SPAfootprint.primals.ecoLive (200)
GIS proxy (10 upstream hosts)via Caddy drawbridgeLive
WebSocket bridge/ws → petalTongue:8080Live (Wave 150g)
CAS backendnestGate PROJECTS_PATHWired (consumer verify pending)

The static SPA provides the full mapping UI. The GIS proxy routes tile requests through Songbird’s drawbridge to 10 upstream sources (USGS, FEMA, OpenStreetMap, Esri, NOAA, and others) — the user’s browser never contacts these services directly.


RustScript — Zero-Dependency Type Safety

footPrint’s client-side code uses RustScript: 12 zero-dependency TypeScript modules that bring Rust-style safety patterns to the browser. No npm packages, no bundler plugins, no runtime dependencies — pure type-level guarantees.

ModuleWhat it provides
Result<T, E>Rust-style error handling — no thrown exceptions
Option<T>Explicit nullable handling — no undefined surprises
match()Exhaustive pattern matching on discriminated unions
Vec<T>Bounds-checked array operations
HashMap<K, V>Type-safe key-value with .get() returning Option

58 tests validate the RustScript modules. The extraction to @protoKarya/rustscript as an npm package is planned — making these patterns available to any TypeScript project.


Architecture

Browser (SPA)
  │
  ├── Map UI (Leaflet + custom layers)
  ├── Drawing tools (polygon, line, point)
  ├── Project storage (localStorage + NestGate CAS wired)
  │
  └── Tile requests
        │
        ▼
      Caddy (drawbridge proxy)
        │
        ├── USGS National Map
        ├── FEMA flood zones
        ├── OpenStreetMap
        ├── Esri imagery
        ├── NOAA weather
        └── 5 additional GIS sources

Evolution Path

The current architecture is a static SPA with a proxy layer. The composition evolution wires footPrint into the full primal stack:

StepWhatStatus
Wire PROXY_PATHSongbird drawbridgeDrawbridge-managed routingDone (Wave 148b)
Responsive design + accessibilityBreakpoints, ARIA, focus traps, mobile drawerDone (Wave 150c)
Known locations + E2E tutorial5 verification locations per Live Frontend StandardDone (Wave 149b)
Fix Caddy routing + CSPRoute footprint.primals.eco → sporeGate:8090, CSP for tile domainsDone (Wave 150e)
Wire PROJECTS_PATHNestGate CASContent-addressed project storageDone (Wave 150e)
Wire WS_PATHpetalTongue bridgeWebSocket JSON-RPC on /ws :8080Done (Wave 150g)
Verify CAS consumer wiringfootPrint client → nestGatePending (footPrint team)
Create footprint_composition.tomlTOML deploy graph manifestOpen

footPrint is now a full composition: the SPA serves from Express on sporeGate, projects are content-addressed via NestGate, and the petalTongue WebSocket bridge enables real-time agent communication. Client-side wiring for CAS and WS is the remaining integration step.


Validation

ScenarioWhat it provesStatus
protokarya-composition-routingCapability routing for footPrint dependenciesGreen
fp-api-proxyDrawbridge port 7780, Songbird ownershipGreen
footprint-drawbridge-liveE2E: upstream GIS → drawbridge → NestGate CASMissing

Lineage

footPrint emerged from groundSpring’s geospatial validation work. The GIS capabilities proven in spring mathematics (coordinate transforms, projection handling, spatial indexing) became the foundation for a user-facing tool. The pattern: springs validate the science, protists make it usable.


Known Locations

The footPrint project system includes modeled locations:

  • Lansing Scuffle (projects/lansing-scuffle.json) — parcel boundary, building footprint, and K-Derm zone polygons for the 464K SF campus at 1305 S Cedar St. See The Lansing Scuffle for the campus vision

footPrint is not a product for sale. It is a demonstration that sovereign infrastructure can serve everyday needs — plan your garden, map your property, understand your land. No account required. No data leaves your machine.