XRAPH/Work/Form engine
TypeScript · since 2025

SmartForm

Forms defined as data instead of code: 25-plus field types, conditional visibility and enablement, cascading options loaded from an API, and validation rules that can depend on other fields. A Go builder produces the definition, a React renderer consumes it.

Language
TypeScript
Category
Form engine
Since
2025
Stars
5
Repository
01

Anatomy

3 modules
01

Schema

Forms described as data rather than written as components.

02

Validation

Rules travel with the schema to both ends.

03

Renderer

One schema, several presentations.

02

Why it exists

Design notes

#What it is

SmartForm defines forms as data rather than code: a Go builder produces the definition, a React renderer consumes it, and the same definition drives validation on both sides.

#What it does

  • Over 25 field types, from basic inputs to composite components.
  • Conditional rendering and conditional enablement based on other fields' values.
  • Field dependencies, including cascading selects.
  • Dynamic options loaded from an API endpoint or a custom function.
  • Validation rules, built-in and custom, that can depend on other fields.
  • Nested fields, arrays and conditional branches for grouping.
  • Authentication strategies and direct API integration for form submission.
  • Extensible field types, validation rules and functions.

#Why data rather than code

A form defined as data can be stored, versioned, edited by someone who is not a programmer, and rendered by more than one client. Every product I have worked on that started with hand-written forms eventually grew a worse version of this, usually as a JSON blob with no schema and no validation story.

03

Signals

GitHub
Stars
5
Language
TypeScript
Since
2025
Adopters
00

Shipping something on SmartForm? Nobody is listed here yet. Tell me what you built and you will be the first.

Get listed
04

Where it sits

Fields · papers