newageerp/sf-controlpanel
A PHP package from NewAgeERP that provides a ready-to-use control panel for administering your application. It offers reusable UI and structure for managing records, configuration, and common admin workflows, helping teams build internal dashboards faster with less boilerplate.
newageerp/sf-controlpanel is a Symfony-side control panel for the newageERP stack, not a Laravel package. Before writing any code, open the repo and check composer.json for symfony/framework-bundle / symfony/http-kernel constraints, the type field (symfony-bundle vs library), and the extra.symfony block. That tells you whether it expects bundle registration.composer require newageerp/sf-controlpanel. If you try this inside a Laravel project you will almost certainly pull a parallel Symfony kernel and collide on symfony/* versions already required by Laravel. Treat the control panel as a separate admin application that shares your Laravel database, not as a Laravel dependency.config/bundles.php if the package ships a *Bundle class. Check src/ for the bundle class name and whether it is auto-discovered.README.md and any docs/ — sparse for a 0-star package, so read it literally.src/DependencyInjection/ — the extension class reveals config keys and default parameters.src/Controller/ and config/routes.* — where the panel mounts and what routes it owns.Resources/config/ or config/ — services, tags, and intended extension points.composer.json require — the real supported Symfony/PHP versions./admin behind a firewall, point it at an existing user table, and verify you can log in and see one list screen before customizing anything. Do not attempt ERP entity integration on day one.Standalone admin app beside Laravel (recommended). Run the control panel as its own Symfony application (or thin skeleton) deployed alongside your Laravel API. Share the same database and, ideally, the same session/SSO. Laravel owns business writes; the control panel reads and administers. This keeps framework upgrades independent and avoids bootstrapping two containers in one process.
Laravel-first integration via HTTP, not code.
If the panel needs ERP data, expose it from Laravel as JSON endpoints and let the Symfony panel consume them. Do not try to instantiate Laravel's Eloquent models inside Symfony. A shared DB connection works for reads but bypasses Laravel events, casts, and observers — a common source of "why didn't my model hook fire" bugs.
Authentication bridge.
domain to the parent domain and align cookie_path, same_site, and session names. Session storage must match (Redis is easiest) if both apps must read the same session.Menu and screen customization.
Control panels of this style usually define navigation and CRUD screens declaratively. Look for config arrays, tagged services, or event subscribers in src/. Prefer registering your own menu items/widgets through the package's documented mechanism over editing vendor files. Fork only if there is no extension point — and then pin the fork to a commit.
CRUD screens.
Subclass the package's base controller/abstract admin class rather than copying it, so security checks, pagination, and CSRF handling stay intact. Keep your resource-specific logic in your app's src/Controller/Admin/, not in vendor/.
Config over code.
Publish the bundle config (bin/console config:dump-reference <alias>) and commit it. Put environment-specific values (DB DSN, mailer, panel base URL) in .env, not in the package defaults.
Upgrade discipline.
For a 0-star, 0-dependent package there is no ecosystem signal that a release is safe. Pin an exact version in composer.json, run composer update --dry-run before bumping, and keep a short changelog of what you changed in vendor/ if you patch anything.
patches entry (e.g. cweagans/composer-patches) rather than editing vendor/ in place.config/bundles.php first, then bin/console debug:router to confirm the routes loaded, then debug:container for the extension alias.bin/console config:dump-reference <alias> instead of copying keys from blog posts; a typo'd key is silently ignored by Symfony's config tree.main firewall with security: false for assets or a broad ^/ pattern, your panel routes may be public without you noticing. Verify with an incognito request, not just a logged-in one.cookie_domain, cookie_secure, or Redis prefix. Symptom: forms work in one app, 419-equivalent in the other.assets:install / importmap / Webpack Encore. If styles or JS are missing, check public/bundles/<name>/ was populated. Don't hand-copy assets from vendor/.bin/console debug:event-dispatcher to find the extension events; debug:container --tag=<tag> to see what the package registers. In Laravel, the equivalent (Telescope, artisan route:list) will show nothing for the panel because it isn't loaded there.templates/bundles/<BundleName>/, and resource/config classes for CRUD screens. Prefer these over inheritance chains.How can I help you explore Laravel packages today?