Public Sector / GovTech

GIS Property Records Search Platform

A public-facing property search portal with an interactive parcel map, backed by a versioned, search-optimized records database.

Full-stack web development with React Next.js and Node.js
Industry
Public Sector / GovTech
Location
USA
Timeline
Multi-phase build

By the numbers

30+
Database entities in the GIS schema
21
Migrations for a reproducible build
PostGIS
Spatial parcels with GeoJSON fallback
Full-text
Denormalized index for fast search

The problem

Property appraisal districts publish records the public has to search — parcels, owners, valuations, and protest status. The data is deeply relational and time-sensitive: ownership changes hands, valuations differ per tax year, and every parcel carries spatial geometry that has to render on a map. Off-the-shelf search could not model versioned ownership, normalized addresses, and spatial parcels together, and naive queries over the full record set were far too slow for an interactive public portal.

What we built

We built a production-grade property search system. The backend is PostgreSQL with PostGIS, modeled around a parcel-first GIS schema of 30+ entities with time-aware ownership and valuation versioning, plus a denormalized full-text search index and cached property summaries for fast detail loads. The frontend is a React + Vite + Leaflet app with property search, results, detail pages, and an interactive parcel map over OpenStreetMap tiles.

Our approach

  • Modeled a parcel-first schema separating GIS foundation, property core, versioned ownership, normalized addresses, and valuation
  • Used PostgreSQL + PostGIS for spatial parcels, with a GeoJSON fallback where PostGIS was unavailable
  • Built a denormalized full-text search index plus cached property summaries for fast lookups and detail pages
  • Exposed a clean REST API for search, filter options, property detail, and map-bounds parcel queries
  • Delivered a React + Leaflet UI with search, results, detail, and an interactive map
  • Shipped migrations and seeders so the schema is reproducible and demoable

Results & outcomes

  • Public can search by owner, address, property ID, neighborhood, subdivision, ARB status, and more
  • Interactive parcel map renders geometry from the same source of truth as the records
  • Versioned ownership and per-tax-year valuations modeled correctly, not flattened
  • Full-text search index keeps lookups fast over a large, denormalized record set
  • Reproducible PostgreSQL/PostGIS schema with migrations, seeders, and a documented REST API

Production GIS search portal

Analysis

The hard part of a property portal is not the UI — it is modeling relational, time-aware, and spatial data together without search grinding to a halt. A parcel-first schema keeps GIS geometry, versioned ownership, normalized addresses, and per-tax-year valuations as first-class concerns rather than flattening them, while a separate denormalized full-text index plus cached summaries keep interactive search fast over a large record set. PostGIS handles spatial queries where available, with a GeoJSON fallback so the system is not hard-blocked on the extension.

Related topics

GIS property searchPostGIS parcel mappingproperty records portalfull-text search PostgreSQLLeaflet map applicationgovernment property dataSequelize GIS schema

← Back to all work