muhammad-nawlo/multitenant-plugin
A Laravel package for adding multi-tenancy to your application, with tenant-aware database connections, middleware, and automatic model scoping to keep each tenant's data isolated. Simplifies building SaaS apps where one codebase serves multiple customers.
Build vs. buy for the tenant admin surface. This package is best understood as a thin Filament admin layer over stancl/tenancy — not a tenancy engine. That reframes the decision: the expensive, risky part of multi-tenancy (data isolation, connection switching, tenant lifecycle) is delegated to a mature upstream library, while this package supplies the screens and wiring for creating, listing, and managing tenants inside a Filament panel. If we are already committed to Filament + stancl/tenancy, the buy case is "a few days of admin UI for free." If we are not, this package is not the reason to adopt either.
Accelerating a specific roadmap item, not a platform bet. The right framing is a scoped acceleration: it shortens the path to a demo-able tenant provisioning flow for an internal tool, an early-access SaaS pilot, or a back-office console. Treat it as a schedule lever on one deliverable, not as a foundational platform commitment.
Feature scoping questions it forces us to answer early. Adoption pressures us to decide, on the record: who creates tenants (self-serve vs. operator), what tenant lifecycle states exist (provision / suspend / delete), whether tenant data isolation is schema-per-tenant or database-per-tenant, and what "delete a tenant" means for data retention and compliance. These are product decisions, and getting them written down is worth more than the package itself.
Buy vs. build the admin UI. Building equivalent tenant CRUD in Filament is genuinely small — likely 3–10 engineering days including tests. That is the honest comparison price. The package wins only if (a) its opinions match ours, and (b) we accept taking a maintenance dependency whose upstream is a single maintainer with 1 GitHub star and a release tag shipping with empty release notes.
Roadmap signal — multi-tenancy readiness. If multi-tenancy is on the roadmap beyond one pilot, the decision that matters is the engine choice (stancl/tenancy vs. alternatives vs. in-house) and the tenancy model. This plugin should be scoped as a swappable UI convenience inside that decision, explicitly non-strategic, and documented as such so it never becomes load-bearing.
Discovery flag for the first spike. The package description claims request-level tenant resolution and middleware, while the repository tagline describes a Filament tenant-management plugin. Those imply very different blast radii — admin-only vs. in the request path of every tenant request. Resolving that ambiguity is the first deliverable, because it changes the risk profile from "cosmetic dependency" to "production path dependency."
Consider it when all of the following hold:
stancl/tenancy as the tenancy engine. In that specific stack it is additive and cheap.Look elsewhere — or build the small admin CRUD ourselves — when:
stancl/tenancy. The package's value collapses to a handful of screens; building them is cheaper than adopting an unrelated stack.For executives — one paragraph. We are evaluating a small, MIT-licensed add-on that gives our Laravel/Filament applications a ready-made screen for creating and managing customer tenants. It does not invent tenancy; it wraps an established open-source tenancy library. The upside is schedule: it could save a few engineering days on a pilot or internal admin console. The downside is supply-chain: it is maintained by one person, has negligible community traction, and shipped its 1.0 release without release notes or a supported-version matrix. Our recommendation is therefore conditional and deliberately narrow: timeboxed spike, one non-critical service, behind a seam we control, with a proven uninstall. We are not proposing it as a platform standard, and we will not expand it to a second service without measured benefit.
For engineering — the ask. Run a two-to-five day spike on one low-criticality service. Confirm the PHP/Laravel version matrix by actually installing it, not by inference. Determine whether it stays in the admin panel or enters the request path via middleware — that distinction drives the entire risk assessment. Wrap all usage behind an interface we own. Then execute the uninstall test and record the result. Write a short internal note so the learning outlives the spike branch, and file a decision record covering the seam, the version-pin policy, the owner, and the rollback procedure. If the package lags a Laravel major, or if removal leaves residue, we stop and build the equivalent Filament screens in-house — the estimated cost of doing so is small enough that we should never feel trapped.
The one-line framing to keep everyone aligned. This is a convenience layer, not a commitment: buy it to save days, scope it so we can drop it in a week, and never let it own our tenancy model.
How can I help you explore Laravel packages today?