Introduction
Formora turns one JSON document into a working, validated, themeable form. You describe the form as data, and the packages do the rest.
The idea
A form is a plain object called a FormDefinition: its fields, how they are laid out on a 12-column grid, its theme, and its rules. Everything else consumes that one object. The renderer draws it, the validator checks answers against it, and storage just persists it.
When someone fills the form in, you get a second document, a FormSubmission, holding their answers and the schemaVersion of the form they answered. Storing the version means an old response still makes sense after the form has changed.
Two packages
| Package | What it does | Needs React |
|---|---|---|
@hardikrastogi/core | Zod schemas for definitions and submissions, the validation engine, versioning helpers, the field-type registry. | No |
@hardikrastogi/react | The FormRenderer component and useFormRenderer hook, 8 built-in field types, a small stylesheet. | Yes (18 or newer) |
Because core has no UI, you can run the same validation on your server that the browser runs.
Status
Formora is early. The packages are versioned 0.x, so the API can still change between minor versions. Conditional logic and calculated fields are part of the schema but are not applied by the renderer yet.
Where to go next
- Install the packages.
- Follow the quickstart to render your first form.
- Try things live in the playground.