Overview

Product Purpose

LandMS manages parcel polygons and parcel metadata with GIS-native behavior. The app is designed around PostGIS operations for spatial selection, summaries, measurements, and exports.

Core Functional Domains

  • Parcel registry: create/read/update/delete parcel records with geometry
  • Map operations: viewport rendering, zoom-level summaries, drawing/editing
  • Selection workflows: tab-scoped selected parcel IDs shared across URLs
  • Dataset governance: active dataset loading and dataset-scoped uniqueness
  • Spatial exchange: upload analysis/preview/apply and multi-format export
  • Analytics: distribution charts for discrete and continuous parcel attributes

Technology Stack

  • Backend: Django 5.2, GeoDjango
  • Database: PostGIS (primary), SpatiaLite fallback for local tests/dev fallback
  • Frontend: Django templates + progressive JavaScript modules
  • Map: Leaflet + Leaflet Draw
  • Charts: ECharts
  • Spatial tooling: GDAL/OGR (ogr2ogr, ogrinfo)

High-Level Visibility Rules

  • Anonymous users: public landing/auth flows
  • Authenticated non-staff: own parcels + public parcels
  • Staff: all visible parcels in the active dataset, edit/admin workflows
  • Internal users (profile.is_internal_user) or staff: analytics/reports