PHPackages                             alamarnissi/json-dynamic-form-builder - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. alamarnissi/json-dynamic-form-builder

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

alamarnissi/json-dynamic-form-builder
=====================================

A dynamic JSON form builder library for PHP.

v1.0.0(11mo ago)01MITPHPPHP &gt;=7.3CI failing

Since Jun 9Pushed 11mo agoCompare

[ Source](https://github.com/alamarnissi/json-dynamic-form-builder)[ Packagist](https://packagist.org/packages/alamarnissi/json-dynamic-form-builder)[ RSS](/packages/alamarnissi-json-dynamic-form-builder/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependencies (4)Versions (2)Used By (0)

JSON Form Builder
=================

[](#json-form-builder)

Create Dynamic Form-Configurations in a JSON Format to render it with your Frontend Environment of Choice

Features
--------

[](#features)

- ✅ Define forms using object-oriented PHP
- 🧱 Supports all common input fields (input, checkbox, radio, select, textarea)
- 📝 Textual elements like headlines, paragraphs, quotes
- 📦 Container support (planned): Group fields in columns or sections
- 🧩 Extensible architecture (add your own field types!)
- 🔄 JSON serialization: Export your form to use in frontend apps
- 🧪 Unit test ready and clean structure
- ⚙️ Composer-ready (planned for Packagist)

Supported Form Elements
-----------------------

[](#supported-form-elements)

### Form Fields

[](#form-fields)

- Input with different Types like "text", "color", "range, "number"
- Textarea
- Single Checkbox
- Checkbox Groups
- Single RadioButton
- RadioButton Group
- Select / Select (multiple)

### Text Elements

[](#text-elements)

- Headlines (h1 - h6)
- Paragraphs
- Quote
- Container (div)

### Extendable

[](#extendable)

Create your own Form or Text Element like Image-Uploads or totally custom Elements.

Directory Structure
-------------------

[](#directory-structure)

```
JsonFormBuilder/
├── JsonForm/               # Core classes
│   ├── FormField/          # Input field types
│   ├── FormTextElement/    # Text elements (headlines, paragraphs)
│   ├── FormFieldCollection.php
│   ├── ...
├── tests/                  # PHPUnit tests
├── composer.json
└── README.md
```

Planned Extensions
------------------

[](#planned-extensions)

FeatureStatusField validation rules🔜 PlannedConditional logic support🔜 PlannedContainer/grouping layout🔜 PlannedAPI for frontend usage🔜 PlannedVue/React renderer🔜 PlannedSubmission endpoint support🔜 PlannedPlanned Extensions
------------------

[](#planned-extensions-1)

ClassDescription`JsonForm`Main form container.`FormFieldCollection`Manages fields.`FormTextElementCollection`Manages headings, paragraphs, etc.`Input`, `Checkbox`, `Select`, etc.Various field types.`Headline1` through `Headline6`Header elements.`Paragraph`, `Quote`Textual elements.Basic Example
-------------

[](#basic-example)

### Code

[](#code)

```
use JsonFormBuilder\JsonForm;
use JsonFormBuilder\JsonForm\FormField\Checkbox;
use JsonFormBuilder\JsonForm\FormField\CheckboxGroup;
use JsonFormBuilder\JsonForm\FormField\Input;
use JsonFormBuilder\JsonForm\FormField\Option;
use JsonFormBuilder\JsonForm\FormField\OptionCollection;
use JsonFormBuilder\JsonForm\FormFieldCollection;
use JsonFormBuilder\JsonForm\FormTextElement\Headline1;
use JsonFormBuilder\JsonForm\FormTextElement\Paragraph;
use JsonFormBuilder\JsonForm\FormTextElementCollection;
use Ramsey\Uuid\Uuid;

$formFields = FormFieldCollection::emptyList()
    ->add(new Input(Uuid::uuid4()->toString(), 'Input', 3))
    ->add(new Checkbox(Uuid::uuid4()->toString(), 'Checkbox', 4))
    ->add(new CheckboxGroup(
        Uuid::uuid4()->toString(),
        'CheckboxGroup',
        5,
        OptionCollection::emptyList()
            ->add(new Option('A', 'A'))
            ->add(new Option('B', 'B'))
    ));

$formElements = FormTextElementCollection::emptyList()
    ->add(new Headline1(Uuid::uuid4()->toString(), 'Your First Dynamic Form', 1))
    ->add(new Paragraph(Uuid::uuid4()->toString(), 'Create your custom Form', 2));

$form = new JsonForm(Uuid::uuid4()->toString(), $formFields, $formElements);
```

### JSON

[](#json)

```
{
   "jsonFormId":"2febf4cd-9c54-4ca4-b619-b51f6321dc8e",
   "formFields":[
      {
         "formFieldId":"afa99e5a-b585-4d3b-8d03-6c196b7c16eb",
         "label":"Input",
         "defaultValue":null,
         "required":false,
         "visible":true,
         "position":3,
         "formFieldType":"input",
         "inputType":"text",
         "class":"JsonFormBuilder\\JsonForm\\FormField\\Input"
      },
      {
         "formFieldId":"5ab7faba-3547-46c5-a237-6164879c339d",
         "label":"Checkbox",
         "position":4,
         "defaultValue":false,
         "required":false,
         "visible":true,
         "formFieldType":"checkbox",
         "class":"JsonFormBuilder\\JsonForm\\FormField\\Checkbox"
      },
      {
         "formFieldId":"1f4ca288-9f04-48b3-ba93-8367a46f84d4",
         "formFieldType":"checkbox_group",
         "label":"CheckboxGroup",
         "position":5,
         "defaultValue":[

         ],
         "required":false,
         "visible":true,
         "options":[
            {
               "label":"B",
               "value":"B"
            },
            {
               "label":"A",
               "value":"A"
            }
         ],
        "class":"JsonFormBuilder\\JsonForm\\FormField\\CheckboxGroup"
      }
   ],
   "formTextElements":[
      {
         "formTextElementId":"9a9c41b1-3ecf-4eef-a383-98567b0c8a28",
         "formTextElementType":"h1",
         "text":"Your·First·Dynamic·Form",
         "position":1,
         "class":"JsonFormBuilder\\JsonForm\\FormTextElement\\Headline1"
      },
      {
         "formTextElementId":"980954c1-acc5-4025-bc2e-97b4962fcc4f",
         "formTextElementType":"p",
         "text":"Create·your·custom·Form",
         "position":2,
         "class":"JsonFormBuilder\\JsonForm\\FormTextElement\\Paragraph"
      }
   ]
}
```

###  Health Score

24

—

LowBetter than 32% of packages

Maintenance55

Moderate activity, may be stable

Popularity1

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity31

Early-stage or recently created project

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

334d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/714761d00ab95309237220e59320d52e0c52bed552e50ef9503896f02a4e0220?d=identicon)[alamarnissi](/maintainers/alamarnissi)

---

Top Contributors

[![alamarnissi](https://avatars.githubusercontent.com/u/46195920?v=4)](https://github.com/alamarnissi "alamarnissi (1 commits)")

### Embed Badge

![Health badge](/badges/alamarnissi-json-dynamic-form-builder/health.svg)

```
[![Health](https://phpackages.com/badges/alamarnissi-json-dynamic-form-builder/health.svg)](https://phpackages.com/packages/alamarnissi-json-dynamic-form-builder)
```

###  Alternatives

[morilog/jalali

This Package helps developers to easily work with Jalali (Shamsi or Iranian) dates in PHP applications, based on Jalali (Shamsi) DateTime class.

9201.2M45](/packages/morilog-jalali)[bruli/php-git-hooks

Git hooks for PHP projects.

675370.8k5](/packages/bruli-php-git-hooks)[nikolaposa/version

Value Object that represents a SemVer-compliant version number.

1406.4M16](/packages/nikolaposa-version)[prooph/common

Common classes used across prooph packages

852.2M26](/packages/prooph-common)[funeralzone/valueobjects

A PHP 7.1 value objects helper library.

66643.3k22](/packages/funeralzone-valueobjects)[tomasnorre/crawler

Crawler extension for TYPO3

58397.5k1](/packages/tomasnorre-crawler)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
