PHPackages                             tivents/livewire-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. tivents/livewire-form-builder

ActiveLibrary

tivents/livewire-form-builder
=============================

A powerful drag-and-drop form builder for Laravel 12 with Livewire 5, supporting all field types, conditional logic, multi-column layouts, and form submissions.

1.0.0(1mo ago)01↓100%MITPHPPHP ^8.2

Since Mar 11Pushed 1mo agoCompare

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

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

Laravel Form Architect
======================

[](#laravel-form-architect)

A powerful, drag-and-drop form builder for **Laravel 12** and **Livewire 5** — a drop-in replacement for form.io.

The package ships **no Models and no Migrations**. You own your data layer. The package communicates with your app through a clean `FormRepositoryContract` interface.

---

Features
--------

[](#features)

FeatureDrag &amp; Drop builder canvas✅**15 field types**✅Multi-column layout (full, 1/2, 1/3, 2/3, 1/4, 3/4)✅Repeater groups with nested columns✅Conditional logic (show/hide per AND/OR rules)✅Real-time per-field validation✅File uploads (single &amp; multiple)✅JSON schema import / export✅CSV submission export✅Repository pattern — bring your own Model✅Artisan scaffolding commands✅Fully publishable views✅### Field types

[](#field-types)

GroupTypes**Inputs**`text`, `textarea`, `number`, `select`, `checkbox`, `radio`, `toggle`, `datetime`, `file`, `repeater`, `hidden`**Layout**`heading`, `hint`, `html`, `divider`---

Requirements
------------

[](#requirements)

- PHP `^8.2`
- Laravel `^12.0`
- Livewire `^5.0`

---

Installation
------------

[](#installation)

```
composer require tivents/livewire-form-builder
```

### 1. Publish config

[](#1-publish-config)

```
php artisan vendor:publish --tag=livewire-form-builder-config
```

### 2. Publish and run stubs (migration + repository)

[](#2-publish-and-run-stubs-migration--repository)

```
php artisan livewire-form-builder:publish-stubs
php artisan migrate
```

This places two files in your project:

FilePurpose`database/migrations/xxxx_create_livewire_form_builder_tables.php`Creates `forms` + `form_submissions` tables`app/Repositories/LivewireFormBuilderRepository.php`Eloquent implementation of `FormRepositoryContract`You are free to rename tables, add columns, or swap out Eloquent for anything else — as long as your repository implements the contract.

### 3. Bind the repository

[](#3-bind-the-repository)

In `app/Providers/AppServiceProvider.php`:

```
use Tivents\LivewireFormBuilder\Contracts\FormRepositoryContract;
use App\Repositories\LivewireFormBuilderRepository;

public function register(): void
{
    $this->app->bind(FormRepositoryContract::class, LivewireFormBuilderRepository::class);
}
```

Or set it in `config/livewire-form-builder.php`:

```
'repository' => \App\Repositories\LivewireFormBuilderRepository::class,
```

---

Usage
-----

[](#usage)

### Admin builder UI

[](#admin-builder-ui)

Navigate to `/livewire-form-builder` — requires the middleware configured in `config/livewire-form-builder.php` (`auth` by default).

### Embed the builder in your own view

[](#embed-the-builder-in-your-own-view)

```
{{-- Create new form --}}

{{-- Edit existing form --}}

```

### Embed the renderer (public-facing)

[](#embed-the-renderer-public-facing)

```
{{-- By form ID --}}

{{-- Inline schema (no DB needed) --}}

{{-- Custom success message --}}

```

### Listen to JS events

[](#listen-to-js-events)

```
document.addEventListener('livewire:init', () => {
    Livewire.on('form-submitted', ({ formId, data }) => {
        console.log('Submitted!', data);
    });
    Livewire.on('form-saved', ({ formId }) => {
        console.log('Builder saved form', formId);
    });
});
```

---

Configuration (`config/livewire-form-builder.php`)
--------------------------------------------------

[](#configuration-configlivewire-form-builderphp)

```
return [
    // Your repository implementation
    'repository' => \App\Repositories\LivewireFormBuilderRepository::class,

    // URL prefix for the built-in admin routes
    'route_prefix'   => 'livewire-form-builder',
    'middleware'     => ['web', 'auth'],
    'builder_routes' => true,   // false to disable built-in CRUD routes

    // Pagination
    'per_page' => 25,

    // File upload
    'disk'             => 'public',
    'upload_directory' => 'livewire-form-builder/uploads',
    'max_file_size'    => 10240,   // KB

    // Register custom field types
    'field_types' => [
        // 'signature' => \App\FormFields\SignatureField::class,
    ],
];
```

---

Adding a Custom Field Type
--------------------------

[](#adding-a-custom-field-type)

Use the scaffold command:

```
php artisan livewire-form-builder:make-field StarRating
```

This generates:

- `app/FormFields/StarRatingField.php` — implement your logic
- `resources/views/vendor/livewire-form-builder/fields/star_rating.blade.php` — renderer view
- `resources/views/vendor/livewire-form-builder/settings/star_rating.blade.php` — builder settings panel

Then register it:

```
// config/livewire-form-builder.php
'field_types' => [
    'star_rating' => \App\FormFields\StarRatingField::class,
],
```

---

JSON Schema Format
------------------

[](#json-schema-format)

```
{
  "name": "Kontaktformular",
  "schema": [
    { "type": "heading", "key": "h1", "text": "Kontakt", "level": "h2", "width": "full" },
    { "type": "text",    "key": "name_abc", "label": "Name",  "required": true, "width": "1/2" },
    { "type": "text",    "key": "email_xyz","label": "E-Mail","required": true, "width": "1/2", "input_type": "email" },
    {
      "type": "select", "key": "topic_def", "label": "Thema", "width": "full",
      "options": [{ "label": "Vertrieb", "value": "sales" }, { "label": "Support", "value": "support" }]
    },
    {
      "type": "textarea", "key": "msg_ghi", "label": "Nachricht", "required": true, "rows": 5,
      "conditions": {
        "action": "show", "logic": "and",
        "rules": [{ "field": "topic_def", "operator": "!=", "value": "" }]
      }
    }
  ]
}
```

---

Artisan Commands
----------------

[](#artisan-commands)

```
# Scaffold a new custom field type
php artisan livewire-form-builder:make-field MyType

# Publish migration + Eloquent repository stubs
php artisan livewire-form-builder:publish-stubs

# Publish config
php artisan vendor:publish --tag=livewire-form-builder-config

# Publish views (to customise)
php artisan vendor:publish --tag=livewire-form-builder-views
```

---

License
-------

[](#license)

MIT

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance95

Actively maintained with recent releases

Popularity2

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity46

Maturing project, gaining track record

 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

59d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/f2eb537a84c15513453d0268176d3b82daa6996668d7394c05d46b27916ae36e?d=identicon)[aldraHastur](/maintainers/aldraHastur)

---

Top Contributors

[![aldrahastur](https://avatars.githubusercontent.com/u/5844861?v=4)](https://github.com/aldrahastur "aldrahastur (5 commits)")

---

Tags

laravellivewireFormsdrag-and-dropform-builder

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/tivents-livewire-form-builder/health.svg)

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

###  Alternatives

[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4195.3M84](/packages/livewire-volt)[mhmiton/laravel-modules-livewire

Using Laravel Livewire in Laravel Modules package with automatically registered livewire components for every modules.

236409.6k9](/packages/mhmiton-laravel-modules-livewire)[tanthammar/tall-forms

A dynamic, responsive Laravel Livewire form generator with realtime validation, file uploads, array fields, and more.

68138.3k1](/packages/tanthammar-tall-forms)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)[lakm/laravel-comments

Integrate seamless commenting functionality into your Laravel project.

40012.9k1](/packages/lakm-laravel-comments)[marcorieser/statamic-livewire

A Laravel Livewire integration for Statamic.

2381.5k10](/packages/marcorieser-statamic-livewire)

PHPackages © 2026

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