evanschleret / formforge
Deterministic dynamic forms engine for Laravel
v1.1.1
2026-04-14 12:10 UTC
Requires
- php: ^8.2
- illuminate/console: ^12.0 || ^13.0
- illuminate/database: ^12.0 || ^13.0
- illuminate/filesystem: ^12.0 || ^13.0
- illuminate/http: ^12.0 || ^13.0
- illuminate/support: ^12.0 || ^13.0
- illuminate/validation: ^12.0 || ^13.0
Requires (Dev)
- orchestra/testbench: ^10.0 || ^11.0
- pestphp/pest: ^3.8
- pestphp/pest-plugin-laravel: ^3.2
README
FormForge
Deterministic dynamic forms for Laravel.
Important
This README is intentionally lightweight. For complete, chaptered documentation, go to: formforge.schleret.ch
What FormForge Is
FormForge is a backend form engine for Laravel (non-UI):
- deterministic form schema
- immutable form revisions
- strict server-side validation
- built-in HTTP API
- scoped routes and owner-aware authorization
- submission exports (CSV/JSONL)
- GDPR retention/anonymization tools
Install
composer require evanschleret/formforge php artisan formforge:install php artisan migrate
Quick Start (Code-First)
<?php declare(strict_types=1); use EvanSchleret\FormForge\Facades\Form; Form::define('contact') ->title('Contact') ->version('1') ->text('name')->required() ->email('email')->required() ->textarea('message')->required(); Form::sync(); $submission = Form::get('contact')->submit([ 'name' => 'Ada', 'email' => 'ada@example.com', 'message' => 'Hello', ]);
HTTP API (Optional)
Enable and configure endpoints in config/formforge.php, then use routes under:
/api/formforge/v1
Main endpoint groups:
- schema
- submission
- upload
- resolve
- draft
- management
For scoped tenant/context URLs, use formforge.http.scoped_routes.
Common Commands
php artisan formforge:list php artisan formforge:describe contact php artisan formforge:http:routes php artisan formforge:http:options php artisan formforge:sync
Full Documentation
Use the full docs for setup patterns, scoped routes, policies, automation resolvers, exports, and GDPR:
License
MIT
