★ New · feat/form-builder

Point a layer at it. Get a form.

Introspect a PostGIS table or GeoPackage vector layer — labels, types, options, geometry, layout — render to live HTML. Pair with the offline field-collection PWA.

PostGIS GeoPackage JSON Schema HTML · React · Vue · Angular Validation DuckDB-WASM PWA · offline

How it works

Schema-first, not hand-drawn

Introspect PostGIS or GPKG — 21 field types, 6 layouts, validation — then render to HTML / React / Vue / Angular / JSON Schema.

Two live sources

/generate/postgis and /generate/gpkg with schema preview before commit.

Field overrides

Swap widgets, defaults, help text, read-only — without touching the source table.

Geometry aware

Geometry columns map to a typed field for capture alongside attributes.

Offline PWA

Next.js + MapLibre + DuckDB-WASM — collect, edit, export GeoJSON/CSV/SHP/GPKG air-gapped.

CapabilityEndpointNotes
Generate GPKGPOST /api/dynamicform/generate/gpkgFile + layer → typed form
Generate PostGISPOST /api/dynamicform/generate/postgisConnection + table
RenderPOST /api/dynamicform/{id}/renderhtml + css + javascript
Standalone HTMLGET /api/dynamicform/{id}/htmlFull page, themed
TemplatesGET /api/dynamicform/templatesbasic · grouped · complete

Field collection PWA

Take it to the field — offline

  • Lat/Long (DD/DMS), MGRS, USNG, GARS + map click
  • Related tables, attachments, conditional logic
  • Voice-enabled fields · re-survey in place
  • Export GeoJSON, CSV, Shapefile, or GeoPackage
POST /api/dynamicform/generate/gpkg{
  "formName": "Building Survey",
  "filePath": "Data/GPKG/survey_points.gpkg",
  "layerName": "survey_points",
  "options": {
    "includeGeometry": true,
    "generateValidation": true
  }
}
→ DynamicForm · render HTML / React / Vue
● designer at /form-builder.html

From schema to survey in minutes.

Generate validated forms from layers you already have, render them anywhere, collect offline.