shipu/filament-where-money-multi-user
A Filament plugin for Laravel that adds money-aware, multi-user query filtering. Apply reusable where-money conditions and user-scoped constraints to tables, reports, and admin panels without custom SQL.
Evidence base and confidence. This assessment is written against a single data point: a v1.0.0 release tagged "First Release." There is no changelog, no feature enumeration, no migration guide, and no prior assessment to diff against. Confidence is therefore low on capability, moderate on process. The most defensible reading of this release is a governance signal rather than a feature signal: the maintainer has declared the public API stable under Semantic Versioning. Treat everything below as a hypothesis set to be validated in engineering spike work, not as a settled evaluation.
Architecture fit. For a Laravel/PHP package, the architectural questions are largely structural and answerable from the repository alone, regardless of what the release note says:
ServiceProvider with package auto-discovery, or does it require manual registration in config/app.php?A package that speaks idiomatic Laravel composes cleanly; one that imports its own container, ORM, or HTTP layer becomes a permanent translation layer in our codebase. This is the single highest-leverage thing to confirm before any commitment.
Integration feasibility. Composer gives us cheap reversibility: composer require and composer remove are low-cost to trial on a branch. The real constraints are the version matrix — PHP floor, supported Laravel majors, and any transitive dependency that pins a package we already rely on. A conflicting constraint on a widely-shared dependency (a HTTP client, a serialization library, a testing framework) is a far more common blocker than the package's own code quality.
Technical risk.
v1.0.0 with no published documentation, no issue history, and no downstream usage means we would be the first production consumer. Early adopters absorb the defect load.unserialize, dynamic class instantiation, outbound HTTP with user-controlled URLs, or raw query building should be reviewed explicitly.1.0.0 tag is a promise, but an unproven promise. A 2.0.0 breaking change within months is plausible for a project's first stable cut.Key questions for the maintainer or spike.
Stack fit. Laravel's package ecosystem rewards convention. Prefer packages that use auto-discovery, publish config under a namespaced key, expose contracts rather than concrete classes, and avoid touching the global namespace. If the package deviates on two or more of these, budget for wrapper code — and a wrapper is a maintenance liability we are choosing to take on.
Migration path. Because this is a greenfield dependency at 1.0.0, there is no data migration in the conventional sense. The migration is organisational: getting the team from "we could use this" to "this is in composer.json on main." Sequence it as an isolated proof of concept on a throwaway branch against a realistic slice of our domain — not a toy example. If the package persists data, prove rollback works before proving the happy path does.
Compatibility checks, in order of cost.
composer require --dry-run against our actual lockfile — resolves transitive conflicts in minutes.Sequencing.
Rule of thumb: adopt behind an interface if the capability is core to the product; adopt directly if it is peripheral and cheaply ripped out.
Maintenance. A 1.x line means patch and minor upgrades should be non-breaking, so ongoing cost is mostly dependency-graph hygiene — keeping the version constraint current as we move Laravel majors. Budget roughly the cost of one minor upgrade per quarter per package, plus the unplanned work when a maintainer goes quiet. Pin to a caret constraint on the minor (^1.0) rather than tracking dev-main.
Support. There is no commercial support implied and no known community. Support means: the maintainer's issue tracker, our own reading of the source, and possibly a paid fork. Confirm the licence permits us to fork and patch internally — if it does not, that is a hard stop for anything on a critical path.
Scaling. Assess where the package sits on the request path. A package that adds per-request overhead, a synchronous outbound call, or an unbounded cache write scales differently from one that is invoked on a queue worker. Look for anything holding state in singletons or static properties — these misbehave under Octane and long-running workers, and that failure mode is invisible in development.
Failure modes.
Ramp-up. For engineers already fluent in Laravel's package conventions, expect hours to first productive use and about a day to genuine confidence, provided documentation exists. It does not appear to. Absent docs, the honest estimate is two to four days of source reading before a mid-level engineer can debug it under pressure — and that cost is paid by every engineer who touches it, not just the first. If the package is adopted into a critical path, write a one-page internal runbook capturing configuration, the exit path, and the upgrade procedure. That page is the cheapest insurance available here.
Recommendation. Do not adopt on the strength of the release note — it carries no information beyond a SemVer commitment. Run the discovery spike; if the source review and licence check pass, pilot behind an interface on a non-critical surface. Revisit this assessment when there is a 1.0.x patch history, a documented support matrix, and at least one independent downstream consumer.
How can I help you explore Laravel packages today?