jordillonch/crud-generator
A Laravel CRUD generator that scaffolds models, controllers, views, and routes from database tables, helping you quickly build admin panels and data-management interfaces with less repetitive boilerplate code.
Architecture fit — the headline finding is that the package metadata is wrong. The repository is jordillonch/CrudGeneratorBundle, a Symfony2 bundle (bundle name, CrudGeneratorBundle namespace, AppKernel::registerBundles() registration, Doctrine/Twig/KnpPaginator dependencies, Bootstrap 2.2.2 output). The supplied description.md describes it as a Laravel package with Artisan commands and Blade views. That description is fabricated or auto-generated and does not match the artifact. For a TPM this is the first diligence gate: if the summary of what a dependency is cannot be trusted, nothing downstream of it can be trusted either.
Structurally, a Symfony bundle is not a portable library. It binds to the full-stack kernel, ships DI compiler passes, resolves resources via @CrudGenerator/Resources/... paths, and typically relies on sensio/framework-extra-bundle annotations. Laravel consumes discrete Symfony components (HttpFoundation, Console, Routing), never bundles. There is no install path, no composer require that yields working behavior, and no service-provider equivalent.
Integration feasibility — reference material only. The only realistic use is as a read-only design reference: what a generated CRUD screen contains (paginated list, column filters, translatable labels, form scaffolding, detail/edit views). Every implementation layer must be swapped, not adapted — Doctrine→Eloquent, Twig→Blade, Symfony Form→FormRequest + Blade components, KnpPaginator→LengthAwarePaginator, XLIFF→lang/*.php, Bootstrap 2.2.2→Bootstrap 5/Tailwind, annotation routes→routes/web.php. What survives is the information architecture, and that is worth roughly a day of reading.
Technical risk — high and one-directional. Symfony 2.x went end-of-life in November 2018 with no security patching since; Bootstrap 2.2.2 predates the v3 grid rewrite and fails modern accessibility and responsive expectations. The code targets PHP 5.x–7.0 and will not satisfy Laravel 10/11's php: ^8.1 constraint. Composer will refuse to resolve — the benign failure mode, because it prevents a half-ported bundle from appearing to work. Secondary risks: single maintainer, no visible CI or test suite, zero downstream dependents meaning zero compatibility validation, and a generated-output layer whose filter implementations in this era commonly concatenate user input into WHERE clauses.
Key questions.
infyom/laravel-generator, blueprint. This package offers no differentiated capability, so there is no build-vs-buy case, only a build-vs-reference case.Stack fit — no. PHP is the only shared surface. Our dependency graph (Laravel skeleton, PHP 8.x, Symfony 6/7 components) and this package's graph (symfony/symfony 2.x components, DoctrineBundle, TwigBundle, FrameworkExtraBundle) are mutually exclusive. The correct posture is to record the incompatibility and move on rather than invest in any bridge.
Migration path — two options, one recommended.
Explicitly out of scope: vendoring, in-place patching, bundle-shim layers, or any attempt to run the Symfony2 generator under Laravel.
Compatibility matrix — every row is a replacement, not an adaptation:
| Concern | Package (Symfony2) | Our target |
|---|---|---|
| Routing | YAML + annotations | routes/web.php, attribute routes |
| Persistence | Doctrine ORM + annotations | Eloquent + attributes |
| Templating | Twig | Blade |
| Forms/validation | Symfony Form | FormRequest + Blade components |
| Pagination | KnpPaginatorBundle | LengthAwarePaginator |
| i18n | Symfony Translator, XLIFF | lang/*.php + __() |
| UI | Bootstrap 2.2.2 | Bootstrap 5 / Tailwind |
| DI | Compiler passes | Service providers, container bindings |
Sequencing (Option A).
--model, --fields, --with-filter flags; publishable stubs so teams can override without forking.lang/en/*.php keys, never XLIFF.Maintenance. Upstream is effectively frozen. Eighty-three stars, zero dependents, no contributor base, no downstream bug discovery, no security response. Anything adopted becomes entirely owned internal surface, including the Symfony2 idioms embedded in it that no current team member will enjoy maintaining. The MIT license is permissive and not the problem; the abandonment is.
Support. No vendor, no SLA, no issue triage, bus factor of one. Escalation is internal-only by definition. Any CVE in the Symfony 2.x or Bootstrap 2.2.2 lineage stays unpatched indefinitely — a standing audit finding rather than an incident to be fixed later. For a TPM this converts a "free" dependency into an unpriced liability.
Scaling. One favorable property: the generator is dev-time and does not enter the request path. The generated output is the concern. Filter implementations of this vintage commonly build queries by string concatenation, offset pagination degrades sharply past roughly 10⁵ rows, and list views routinely trigger N+1 relation loads. If those patterns are copied into a Laravel port they will be rewritten at the first performance incident. Treat any generated screen as a scaffold, never as a production baseline.
Failure modes.
lang namespaceRamp-up. High friction for Laravel engineers: the Symfony2 bundle model, Doctrine annotation mapping, and annotation-driven routing are unfamiliar and rarely encountered now. Symfony2 veterans read it easily, but that population is thin and shrinking, and the knowledge transfers poorly to Symfony 6/7 (annotations→attributes, bundle-less architecture). Realistic estimate: 2–4 days for a mid-level Laravel engineer to competently port a template layer, versus 2–3 hours to evaluate a maintained Laravel-native generator and get further.
Bottom line for the roadmap. The quality score (2.78) describes the artifact accurately; the opportunity score (7.71) describes genuine, durable demand for CRUD scaffolding but attributes it to the wrong vehicle. Recommend closing as not adoptable on the Laravel track, retaining it as a read-only design reference for list/filter view shapes, and redirecting any funded effort toward evaluating a maintained framework-native generator against our design system. Separately, flag the mismatch between the supplied package description and the actual repository — if this metadata feeds automated sourcing or scoring, that pipeline needs a correctness check before its output informs another build-vs-buy decision.
How can I help you explore Laravel packages today?