Deterministic dynamic forms for Laravel.
Important
This README is intentionally lightweight. For complete, chaptered documentation, go to: formforge.schleret.ch
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
composer require evanschleret/formforge
php artisan formforge:install
php artisan migrate<?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',
]);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.
php artisan formforge:list
php artisan formforge:describe contact
php artisan formforge:http:routes
php artisan formforge:http:options
php artisan formforge:syncUse the full docs for setup patterns, scoped routes, policies, automation resolvers, exports, and GDPR:
MIT
