marmelab/ng-admin-generator-bundle
A Symfony bundle that generates ng-admin back-office configurations from Doctrine entities, automatically mapping fields and relations to CRUD views and forms so you can expose admin panels with minimal boilerplate.
Verdict up front: this is not a Laravel package. It is a Symfony bundle (marmelab/ng-admin-generator-bundle) that introspects a LemonRestBundle-based Symfony API and emits a JavaScript configuration file for ng-admin, an AngularJS 1.x admin front end. Every layer of the stack — Symfony bundle registration, Doctrine entity metadata, LemonRest annotations, AngularJS — is orthogonal to a Laravel/Eloquent/Blade/Livewire application. As a TPM you should treat this as a reference implementation to study, not a dependency to install. The 1.21 composite score, 0 dependents, and archived status corroborate that read.
Architecture fit — poor, by construction
DependencyInjection/*Extension, compiler passes, Resources/config/services.yml). Laravel has no bundle concept; you would need a service provider shim that re-registers the generator classes manually.@Rest\... annotations, entity mappings). Laravel exposes Eloquent models and route definitions instead. There is no adapter layer in the package, so the "generate from your API" value proposition does not transfer.Integration feasibility — feasible only as a fork/extraction
app/Console/Commands or an internal packages/ directory, replace Doctrine metadata reads with Eloquent (Schema::getColumns, casts, $fillable, relationship methods), and drive it from an Artisan command (php artisan admin:generate-config).Technical risk — high
| Risk | Severity | Notes |
|---|---|---|
| Archived, unmaintained upstream | High | No security patches, no PHP 8.x support guarantee; abandoned ~Symfony 2/3 era |
| AngularJS EOL | High | Admin CRUD surface is a prime attack target on an unsupported framework |
| Zero dependents | Medium | No community validation, no fork ecosystem to lean on |
| Phantom dependency on LemonRestBundle | Medium | Also a marmelab legacy project; compounds abandonment risk |
| False economy | High | Port cost likely exceeds adopting Filament/Nova/Backpack, which are Laravel-native and actively maintained |
Key questions to resolve before any commitment
artisan make:model scaffolding) already satisfy the latter without a fork.Stack fit — none out of the box. Laravel's conventions (Eloquent, Artisan, Blade/Inertia/Livewire, Vite) map to none of the bundle's assumptions (Doctrine, bundle DI, ng-admin, legacy asset tooling). A TPM should frame this to stakeholders as "greenfield build informed by an existing design," not "integrating a package."
Recommended migration path (build-vs-buy gate first)
/packages/ng-admin-generator with its own README, pin PHP 8.2+ compatibility in CI, and treat it as a dev-time tool only — never a runtime dependency in composer.json of the main app.Compatibility considerations
each()-style constructs, and add strict types during the port.use statements (Symfony\Component\Console, DependencyInjection, Config) — the generator's console command must be rewritten as an Illuminate\Console\Command.Sequencing
Maintenance — the dominant cost. Forking transfers 100% of upstream maintenance to us. Because the repo is archived, there is no "wait for a patch" option and no upgrade path. Budget an ongoing owner: dependency bumps, PHP minor-version compatibility, and field-mapping drift each Laravel release. Compare against Filament/Nova, where the vendor absorbs that cost.
Support. No upstream support channel, no issue triage, no security advisories. Internal support means tribal knowledge held by whoever performed the port — a bus-factor of one unless documented. Mitigate with a written runbook and golden-file test suite as a condition of merge.
Scaling. The generator itself is trivially cheap — it runs at build/dev time and emits a static config. Scaling concerns are entirely in the output: an AngularJS admin SPA issuing REST calls to Laravel. Expect N+1 query exposure from auto-generated list views (the generator cannot know your eager-load strategy), unbounded pagination, and missing server-side filtering — all of which land on the Laravel API as load grows. Treat generated config as a starting point requiring per-resource tuning.
Failure modes to design against
Ramp-up. Assume two to three days for a competent Laravel engineer to understand the generator internals and produce a first port. Add significant friction for the front end: AngularJS 1.x and ng-admin skills are scarce in the current hiring market, so any UI customization becomes a specialist task. If the team is Laravel-only, the honest answer is that nobody wants to own the ng-admin half — which is itself a strong argument for the buy-side option.
TPM recommendation: do not adopt as a dependency. Run the spike to harvest the schema-to-field mapping ideas, then almost certainly ship the admin surface on a Laravel-native framework. Revisit only if a legacy Symfony + LemonRest service exists that must be kept alive pending decommission.
How can I help you explore Laravel packages today?