PHPackages                             3neti/form-flow - 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. 3neti/form-flow

ActiveLibrary

3neti/form-flow
===============

Driver-based form flow orchestration system with DirXML-style mapping for Laravel applications

v1.7.15(2mo ago)01.1k5MITPHPPHP ^8.2CI failing

Since Dec 24Pushed 2mo agoCompare

[ Source](https://github.com/3neti/form-flow)[ Packagist](https://packagist.org/packages/3neti/form-flow)[ Docs](https://github.com/3neti/form-flow)[ RSS](/packages/3neti-form-flow/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (1)Dependencies (12)Versions (24)Used By (5)

Form Flow
=========

[](#form-flow)

[![Latest Version](https://camo.githubusercontent.com/2bc3a29d0f0689309030ed9666794ec2a479922926539ec2fe92aaaf57936c5f/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f336e6574692f666f726d2d666c6f772e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/3neti/form-flow)[![Tests](https://camo.githubusercontent.com/919098a8853f8b3cff61fce0a0e39d962abcc6277f20529f17ae315054ec75e9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f336e6574692f666f726d2d666c6f772f74657374732e796d6c3f6272616e63683d6d61696e266c6162656c3d7465737473267374796c653d666c61742d737175617265)](https://github.com/3neti/form-flow/actions/workflows/tests.yml)[![Total Downloads](https://camo.githubusercontent.com/47d677b4c86ac09031e9412a7e7e85babf15a2c06eb30ec2addd9b5773d9f9a8/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f336e6574692f666f726d2d666c6f772e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/3neti/form-flow)[![MIT Licensed](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE)

Driver-based form flow orchestration system with DirXML-style mapping for Laravel applications.

Features
--------

[](#features)

- **Driver-Based Architecture**: Define multi-step form flows using YAML configuration files
- **DirXML-Style Mapping**: Transform and map data between steps using flexible mapping rules
- **Handler Plugin System**: Extend functionality with custom form handlers
- **Built-in Handlers**: FormHandler, SplashHandler, and MissingHandler included
- **Vue Components**: Pre-built Inertia.js Vue components for rapid development
- **Configurable**: Customize route prefixes, middleware, and behavior
- **Self-Contained**: Automatic CSRF handling, route registration, and asset publishing

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

[](#requirements)

- PHP ^8.2
- Laravel ^11.0 || ^12.0
- Inertia.js ^2.0

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

[](#installation)

Install via Composer:

```
composer require 3neti/form-flow
```

### Publish Assets

[](#publish-assets)

Publish the configuration file:

```
php artisan vendor:publish --tag=form-flow-config
```

Publish driver examples:

```
php artisan vendor:publish --tag=form-flow-drivers
```

Publish Vue components:

```
php artisan vendor:publish --tag=form-flow-views
```

Or publish everything at once:

```
php artisan vendor:publish --tag=form-flow-core
```

Configuration
-------------

[](#configuration)

The package configuration is located at `config/form-flow.php`:

```
return [
    'route_prefix' => env('FORM_FLOW_ROUTE_PREFIX', 'form-flow'),
    'middleware' => ['web'],
    'driver_directory' => config_path('form-flow-drivers'),
    'session_prefix' => 'form_flow',
    'handlers' => [
        // Plugin handlers register themselves via service providers
    ],
];
```

Usage
-----

[](#usage)

### Creating a Form Flow

[](#creating-a-form-flow)

Define a flow driver in `config/form-flow-drivers/my-flow.yaml`:

```
name: my-flow
title: My Form Flow
steps:
  - handler: splash
    config:
      title: Welcome
      message: Let's get started

  - handler: form
    config:
      title: User Information
      fields:
        - name: full_name
          type: text
          label: Full Name
          validation: required|string|max:255
```

### Starting a Flow

[](#starting-a-flow)

```
use Illuminate\Support\Facades\Http;

$response = Http::post('/form-flow/start', [
    'reference_id' => 'unique-transaction-id',
    'steps' => [
        ['handler' => 'splash', 'config' => [...]],
        ['handler' => 'form', 'config' => [...]],
    ],
    'callbacks' => [
        'on_complete' => 'https://your-app.com/api/flow-complete',
        'on_cancel' => 'https://your-app.com/api/flow-cancelled',
    ],
]);

$flowUrl = $response->json('flow_url');
```

### Available Routes

[](#available-routes)

The package automatically registers these routes:

- `POST /form-flow/start` - Start a new flow
- `GET /form-flow/{flow_id}` - Show current step
- `POST /form-flow/{flow_id}/step/{step}` - Update step data
- `POST /form-flow/{flow_id}/complete` - Complete flow
- `POST /form-flow/{flow_id}/cancel` - Cancel flow
- `DELETE /form-flow/{flow_id}` - Destroy flow state

Plugin Development
------------------

[](#plugin-development)

Create custom handlers by implementing `FormHandlerInterface`:

```
use LBHurtado\FormFlowManager\Contracts\FormHandlerInterface;

class MyCustomHandler implements FormHandlerInterface
{
    public function getName(): string
    {
        return 'my-custom';
    }

    public function handle(Request $request, FormFlowStepData $step, array $context = []): array
    {
        // Process step data
        return ['processed' => true];
    }

    public function render(FormFlowStepData $step, array $context = [])
    {
        return inertia('MyCustomView', [...]);
    }

    // ... other methods
}
```

Register in your service provider:

```
public function boot(): void
{
    $handlers = config('form-flow.handlers', []);
    $handlers['my-custom'] = MyCustomHandler::class;
    config(['form-flow.handlers' => $handlers]);
}
```

Vue Components
--------------

[](#vue-components)

The package includes ready-to-use Vue components:

- `GenericForm.vue` - Generic form renderer
- `Splash.vue` - Splash screen handler
- `Complete.vue` - Flow completion page
- `MissingHandler.vue` - Fallback for missing handlers

Testing
-------

[](#testing)

```
composer test
```

Changelog
---------

[](#changelog)

Please see [CHANGELOG](CHANGELOG.md) for recent changes.

License
-------

[](#license)

The MIT License (MIT). Please see [License File](LICENSE) for more information.

Credits
-------

[](#credits)

- [Lester Hurtado](https://github.com/lbhurtado)
- [3neti](https://github.com/3neti)

###  Health Score

47

—

FairBetter than 94% of packages

Maintenance88

Actively maintained with recent releases

Popularity20

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity57

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

Every ~4 days

Total

23

Last Release

62d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/586e1ed70140038e6348728222adbcf68bfc4455b1f94a4f8bcbe57917a63d57?d=identicon)[3neti](/maintainers/3neti)

---

Top Contributors

[![3neti](https://avatars.githubusercontent.com/u/89447696?v=4)](https://github.com/3neti "3neti (27 commits)")

---

Tags

laravelmapperdriverinertiawizardvueform-flowmulti-step-formdirxml

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/3neti-form-flow/health.svg)

```
[![Health](https://phpackages.com/badges/3neti-form-flow/health.svg)](https://phpackages.com/packages/3neti-form-flow)
```

###  Alternatives

[kiwilan/typescriptable-laravel

PHP package for Laravel to type Eloquent models, routes, Spatie Settings with autogenerated TypeScript. If you want to use some helpers with Inertia, you can install associated NPM package.

3920.9k](/packages/kiwilan-typescriptable-laravel)[a2insights/filament-saas

Filament Saas for A2Insights

161.1k](/packages/a2insights-filament-saas)

PHPackages © 2026

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