wotz/filament-architect
Filament Architect streamlines building Laravel Filament admin panels, helping you scaffold resources, forms, and tables from your database schema so you can ship polished back-office interfaces faster with less boilerplate.
Architecture fit. wotz/filament-architect is a form-field extension for Filament's Builder component — a drop-in replacement or subclass that adds authoring capabilities on top of Filament's existing block-composition primitive. It introduces no new runtime services, queues, storage backends, or external dependencies. Architecturally this is the cheapest possible integration shape for a Laravel/TALL stack: one Composer package, one field class swapped into a resource schema, and a JSON column that already exists in the Builder pattern. Fit is therefore high if and only if the application is already a Filament application.
Integration feasibility. Mechanically trivial: composer require, publish assets/config if required, replace Builder::make('content') with the architect field, and define block schemas as today. Effort is measured in hours, not sprints. The real feasibility question is not "can we install it" but "can we safely depend on it," and the adoption signals are poor: 2 stars, 0 dependents, no downstream projects to inherit bug reports from.
Technical risk. Four risks dominate, in descending order:
Builder is among Filament's most complex form components and its internals shift across Filament majors (v3 → v4). An "extended Builder" is by definition a subclass or a heavy override, so minor-version churn can break it in ways that are not covered by the package's own tests — if tests exist.Key questions before committing.
composer.json constraint on filament/filament and illuminate/support? Does a v4 branch exist?Builder — nesting, block presets/templates, drag handles, per-block previews, cross-resource block libraries? Is any of that on our roadmap, or are we paying lock-in for cosmetics?Builder output, or is the payload proprietary?Stack fit. Laravel + Filament + Livewire + Alpine, no new infrastructure. The only persistent footprint is a JSON/longText column. That scores well on operational simplicity and poorly on reversibility.
Compatibility. Pin the package to an exact version, not a caret range, and pin filament/filament alongside it. Run CI against both the lowest and highest Filament versions in the declared constraint — this is the single cheapest early-warning mechanism for the internals-coupling risk. Verify the PHP and Laravel version matrix matches the host application before the spike, not after.
Migration path. Do not let the vendor class appear anywhere but one file.
ContentBlocks field factory (or a thin subclass) that returns the architect field. All resources call ours; exactly one file imports the vendor namespace. Swapping back to stock Builder, or to a fork, becomes a one-file change.schema_version into the JSON payload from day one, and store block type keys as stable, explicit strings rather than class names.Builder available behind a feature flag so a rollback is config, not a code revert.Sequencing.
schema_version convention, and the registry/fallback renderer before any editor touches it.Maintenance. Low steady-state effort but non-zero: you own the wrapper, the block registry, the renderer, and any fork. Budget roughly a few days per Filament upgrade to re-validate the field, plus ongoing schema-migration work whenever a block changes. That latter cost is driven by content volume, not by the package — it exists with stock Builder too, so it should not be charged against the buy decision.
Support. No commercial support, no dependents, no community to lean on. Escalation path is "open an issue and hope," which means the effective support model is we support it. That is acceptable for an internal editorial tool and unacceptable for anything customer-facing and revenue-critical without a named internal owner.
Scaling. Runtime scaling is a non-issue — the field renders in the admin panel, and content JSON is read on public page render. Watch payload growth instead: deeply nested blocks inflate the JSON and the Livewire component state, which degrades editor responsiveness on large pages. Set a soft cap on block count and nesting depth, and cache rendered output rather than re-parsing JSON per request.
Failure modes.
schema_version plus a validation pass over stored content in CI.Ramp-up. For a developer already fluent in Filament, half a day to productive, one day to fluent in the payload shape. The larger onboarding cost is editorial: block-based authoring needs conventions, previews, and a "what good looks like" guide, or output quality drifts. Treat the editor enablement materials as part of the delivery scope, and designate one engineer as the package owner so the bus factor of one on the upstream side does not become a bus factor of zero on ours.
How can I help you explore Laravel packages today?