Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Formmetadata Laravel Package

corleonis/formmetadata

Corleonis FormMetadata is a Laravel package for attaching and managing structured metadata on forms, making it easy to store custom field attributes, configuration, and other form-related details in a consistent, retrievable way.

View on GitHub
Deep Wiki
Context7

Technical Evaluation

Architecture fit. The first thing a TPM should record is a framing conflict in the source material: the package description describes a Laravel library, but the repository is FormMetadataBundle — a Symfony bundle built on the Symfony Form component and Doctrine entity metadata. There is no Laravel service provider, no Eloquent integration, no Blade/Livewire surface. Against a Laravel estate, architectural fit as a dependency is essentially zero. The capability it embodies — declarative field metadata co-located with the domain class, consumed by one generic CRUD controller — is framework-agnostic and directly relevant to any roadmap containing CMS-style dynamic entities, tenant-defined content types, or a generic admin layer. So the TPM verdict splits cleanly: the concept is roadmap-relevant; the artifact is not adoptable.

Integration feasibility. Low as a dependency, moderate as a pattern. There is no composer require path into a Laravel app and no Symfony version we can confirm from the repository metadata. Real adoption means reimplementing four things: (a) metadata declaration, as PHP 8 attributes rather than docblock annotations; (b) a registry resolving class → field definitions; (c) a builder translating definitions into Laravel validation rules and form/Blade output; (d) a generic controller that authorizes and persists against an explicit field allowlist. That is a bounded internal library — days of engineering, not weeks — but it is a build, and the build must be staffed and owned. The package's real contribution is prior art on the metadata shape and the annotation-to-form-builder bridge, which de-risks the spike.

Technical risk. High and multi-axis.

  • Maintenance signal: zero. Zero stars, zero dependents, no visible production usage. No community review, no downstream compatibility pressure, no evidence of correctness under load.
  • Decaying foundation. Docblock annotations are being retired across the ecosystem — doctrine/annotations 2.x removed the reader and Symfony has been migrating configuration to PHP 8 attributes. A bundle of this vintage likely does not run unmodified on Symfony 6/7 or PHP 8.2+.
  • Unknowns blocking any assessment. Repository metadata gives no composer.json constraints, last-commit date, license, or test coverage. A Symfony shop cannot even evaluate compatibility without a hands-on spike.
  • Supply-chain exposure. An unreviewed, unmaintained package performing reflection and metadata resolution sits in the request path of admin CRUD — the highest-privilege surface in the application.

Key questions.

  • Is the target estate Laravel or Symfony? This single answer determines whether the package is in scope at all.
  • What are the declared php, symfony/*, and doctrine/* constraints, and when was the last commit? What license, and is there a fork/transfer path if the maintainer is inactive?
  • Does it wrap Symfony's Form type guessing or maintain its own field-type map? A private map is a permanent maintenance tax.
  • Does it validate metadata against the Doctrine column type, or can the two silently diverge?
  • How does it handle field-level authorization and mass-assignment on generic controllers — is there an allowlist?
  • Which entity types and admin surfaces are actually in the pipeline, and what is the measured per-entity boilerplate cost today? Without that number, the build case is unfalsifiable.

Integration Approach

Stack fit. Poor for Laravel, plausible only for a Symfony + Doctrine ORM estate. In Laravel, the nearest analogues are a schema-driven form builder over Eloquent casts plus a generated validation-rule set; nothing in the framework reads class-level metadata to drive forms. In Symfony, the bundle is at least idiomatic — but only if version constraints resolve, which is unverified.

Migration path. Recommended: do not adopt; replicate the pattern. Use the repository as a design reference for the metadata contract — field name, type, options, constraints, per-class association — then build an internal package: PHP 8 attributes for declaration, a compiled and cached metadata registry (not per-request reflection), a builder emitting FormRequest rules plus Blade/Livewire field components, and a generic resource controller that authorizes each declared field explicitly. If the estate is Symfony and constraints check out, the path inverts: fork, convert annotations to attributes, pin internally, and publish an upgrade cadence.

Compatibility. Blocking gates before any commitment: PHP floor, Symfony major version, Doctrine ORM/annotations versions, and whether the code depends on the removed annotation reader. On PHP 8.1+ the annotation mechanism is a dead end regardless of what the bundle claims — attributes are the only defensible declaration format going forward. On the Laravel side, the gates are the framework major version, the validation API, and whether the chosen UI layer (Blade vs Livewire vs Inertia) can consume generated field schemas.

Sequencing.

  1. Confirm target framework — this gates every downstream decision and should be resolved in the first meeting.
  2. Timebox a 1–2 day compatibility spike in a scratch app if Symfony is in play; read the annotation-to-FormBuilder mapping (likely a few hundred lines) to extract the contract.
  3. Run build-vs-adopt against fork cost; default to build given zero upstream signal.
  4. Freeze the metadata contract as an internal spec — field name, type, validation, persistence, authorization — before writing any builder code. Contract churn is the main schedule risk in this work.
  5. Implement registry + validation mapping + form rendering with golden tests against one representative CMS entity.
  6. Pilot on one low-risk admin CRUD surface; expand only on measured boilerplate reduction.
  7. Fallback decision point: if the spike misses the boilerplate target, default to Filament/Nova on Laravel or EasyAdmin/API Platform on Symfony and close the question.

Operational Impact

Maintenance. Effectively self-maintained from day one. With zero stars, zero dependents, and a score of 0, assume no upstream fixes, no security patches, and no framework-version upkeep. Any fork becomes an owned asset needing a named owner, a changelog, and a scheduled upgrade review — a recurring headcount cost that must be budgeted explicitly rather than absorbed as "just maintenance."

Support. No vendor, no community, no issue-tracker throughput. Documentation is a README describing annotation syntax. Expertise will concentrate in whoever writes the port — a bus-factor-1 risk unless the metadata contract, builder, and authorization model are documented and covered by tests.

Scaling. Metadata resolution via reflection is per-request work; compile the attribute scan at build time and cache it (Redis/file), never resolve on every admin page load. Metadata-driven forms also complicate validation and field-level authorization at scale: the generic controller must not become a policy bypass, and every declared field needs an explicit allowlist entry for both rendering and persistence. Expect the authorization model, not the rendering, to be the scaling bottleneck.

Failure modes.

  • Framework upgrade breaks the bundle with no upstream fix — highest probability, highest cost.
  • Annotation reader removal on a PHP/Doctrine upgrade takes the system down at once.
  • Silent metadata drift: an entity column changes but the attribute does not, producing type mismatches discovered at write time in production.
  • Privilege escalation or mass-assignment through a generic controller that trusts declared fields without per-field authorization.
  • Reflection/caching bugs producing stale form schemas after deploy.
  • Orphaned fork: the internal copy diverges from the original with no reconciliation path and no one left upstream to reconcile with.
  • Roadmap risk: teams over-invest in the generic admin layer before confirming that customer-defined content is actually funded, leaving a bespoke platform with a single consumer.

Ramp-up. High for a Laravel team — new paradigm, stale docs, and no working examples in the target stack; budget a spike before committing engineering time. Moderate for a Symfony team fluent in Form types and Doctrine metadata, though the annotation-to-attribute conversion, constraint vetting, and authorization review must complete before the first production entity ships. In both cases the practical ramp-up cost is the internal contract spec and its tests, not the third-party code.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
kjmtrue/laravel-debugbar
hexincorp/debugbar
razorbacks/laravel-shibboleth
adilazhari/laravel-idempotency
mamitech/laravel-slow-query-log
mamitech/laravel-http-logger
medeirosrafael/docxmustache
webdevlabs/phreak
vis/log-envelope
digitickets/lalit
acacha/names
scool/foundation
frankkessler/guzzle-oauth2-middleware
delatbabel/site-config
delatbabel/applog
eusonlito/laravel-gettext
henzeb/housepedia-intelligence-laravel
aliqsm/laravel-authkit
itsjustvita/laravel-wp-migrator
uslanozan/laravel-cache-contract