degraciamathieu/manager
Manager is a Laravel package that provides a simple, configurable CRUD interface for your Eloquent models. Browse, create, edit, and delete records with minimal setup, reducing repetitive admin boilerplate and keeping model management inside your Laravel app.
Architecture fit. The package productizes Illuminate\Support\Manager, the framework-internal abstract that powers Cache, Mail, Queue, Filesystem, Session, and Database driver resolution. For teams already reasoning in Laravel idioms, this is a natural fit: a Manager subclass gives you named drivers, lazy instantiation, a getDefaultDriver(), a driver() accessor, and an extend() hook for runtime registration — exactly the shape you want when an application must integrate with N interchangeable third-party providers (payment gateways, SMS vendors, storage backends, KYC providers, ERP connectors). The architectural value is not new capability; it is standardization — it replaces the match ($config['driver']) blocks and hand-rolled provider factories that accumulate in service providers. Adoption is low (92 stars, composite score ~3.2), which tells you this is a convenience/pattern package rather than an ecosystem standard. Treat it as a thin, replaceable layer, and the architecture fit is strong; treat it as infrastructure, and it is not.
Integration feasibility. Likely high and low-cost. Composer-installable, no runtime services, no database, no queue dependency; the integration surface is a service provider binding plus a config file. If it is a thin wrapper over the framework class, a competent Laravel developer can validate it in an afternoon and vendor-fork it in a day if needed. The main feasibility question is not "can we install it" but "does it add enough over Illuminate\Support\Manager directly to justify a third-party dependency at all" — that is the build-vs-depend decision this package must win.
Technical risk. Overall: low technical, moderate supply-chain/durability. Specific risks:
illuminate/support constraint and CI matrix cover the Laravel majors we run, and that composer update will not silently pin us to an old framework line.driver() returns are generically typed or mixed.Key questions to put to the maintainer or resolve in a spike:
Illuminate\Support\Manager or reimplement it? What breaks on Laravel 12/13?extend()/closure-based driver registration supported for per-tenant runtime providers?Stack fit. Excellent for a conventional Laravel monolith or modular monolith on PHP 8.2+ where the pattern is already latent. Poor fit for a polyglot or heavily hexagonal codebase where provider selection lives outside the framework — there the manager should be an implementation detail behind a domain-owned interface, not a public API.
Migration path. Use it as a refactor target, not a rewrite: inventory existing match/switch provider selection and hand-rolled factories, then convert one domain at a time into a Manager subclass with one config block and one service-provider binding. Keep the domain-facing contract (PaymentGateway, SmsSender) as your own interface, with the manager resolving implementations — this preserves the option to drop the package with a one-file change. If teams already subclass the framework Manager directly, adoption is a near no-op and mainly buys convention and shared docs.
Compatibility. Verify three things before committing: the illuminate/support constraint against our pinned Laravel version, PHP version floor vs. our runtime images, and interaction with config:cache (driver config must be cache-safe, no closures in config files). Also confirm no collision with existing service-provider bindings or a Manager alias.
Sequencing.
config:cache, Octane, and queue workers; measure the diff size vs. the hand-rolled equivalent.Illuminate\Support\Manager internally — zero dependency, same benefit. Document this either way.Maintenance. Near-zero ongoing cost: no migrations, no scheduled jobs, no infrastructure. The real maintenance line item is dependency hygiene — a version bump once or twice a year, plus a re-evaluation at each Laravel major. Budget a half-day per Laravel upgrade and one day per year for the "is this still maintained?" review. Keep the fork runbook current; forking a ~few-hundred-line package is routine work, not a crisis.
Support. Community-only, no SLA, one maintainer. Internal ownership must be explicit: name a team as the de facto maintainer of our usage (not the upstream repo), and record the escalation path (fork → vendor → replace with framework-native subclass). This is acceptable for an internal convenience layer and unacceptable for anything on a regulated or revenue-critical path unless it sits behind our own interface.
Scaling. Runtime overhead is negligible — driver resolution is a property lookup plus a memoized instantiation, executed once per process, not per request. The scaling concerns are architectural, not performance:
Failure modes. Ranked by likelihood × impact:
config:cache incompatibility (closures or env() calls in the manager config) → works locally, fails in staging. Mitigate in the pilot checklist.Ramp-up. A Laravel-competent engineer needs roughly half a day to be productive (framework Manager familiarity transfers almost directly) and one to two days to be authoritative on our conventions. Onboarding cost is dominated by documenting our taxonomy of managers and drivers, not by the package itself. Net TPM recommendation: adopt the pattern; take the dependency only if the spike shows meaningful added value over subclassing Illuminate\Support\Manager, and in either case keep it behind a domain-owned interface so it remains a reversible, low-consequence decision.
How can I help you explore Laravel packages today?