liberu-crm/crm-laravel
Liberu CRM for Laravel is a modular customer relationship management package with contacts, companies, deals, activities, and customizable pipelines. It integrates cleanly into Laravel apps, providing a solid foundation for building and extending CRM features quickly.
Architecture fit. The package is a Laravel application-layer package whose concerns span three distinct tiers: presentation (Filament panel navigation grouping, Livewire-driven setup wizard), identity/access (spatie/laravel-permission, Socialstream/Socialite OAuth), and commerce (Stripe). v10.0.0 is a consolidation release rather than a single-feature release, which means the "architecture fit" question is really three questions. For a Laravel host already on the Filament/Livewire stack, the navigation and wizard additions are additive UI-layer work with no new infrastructure dependency. The dependency pins are the architecturally significant item: Guzzle is held at 7.x because Socialstream/Socialite has no Guzzle 8 support, and spatie/laravel-permission is held at 7.x because the roles-permissions layer requires it. Those are not this package's constraints to fix, but they become our constraints once we adopt, because they propagate into our root composer.json and shrink the set of resolvable version combinations for the whole application.
Integration feasibility. The absence of any prior assessment and any usage data is the dominant fact here. I am evaluating a major version bump with no baseline — no installed base, no version of record, no adoption history to compare against. That makes this a greenfield evaluation of v10.0.0 specifically, not an upgrade risk assessment. Practically, this is favorable: we are not inheriting a migration. But it also means the assessment carries no field evidence and every claim below is derived from release notes rather than observed behavior. Integration feasibility is conditionally high, contingent on the Filament/Livewire major versions this package targets being the ones our host application can run.
Technical risk. Four items, ranked:
Key questions.
Stack fit. This package assumes a modern Laravel application on Filament and Livewire with Stripe in the commerce layer, Socialstream/Socialite for OAuth, and spatie/laravel-permission for authorization. It is a fit for a host already on that shape and a poor fit for anything else — the permission and OAuth dependencies are not optional conveniences, they are load-bearing, and the pins make that explicit. Any host on Guzzle 8 or spatie/laravel-permission 8 should treat this as a blocker, not a friction point.
Migration path. Greenfield: none needed. Install v10.0.0 directly and pin it. For a host that reaches this later, the two named pins are the migration hazards — a host on Guzzle 8 must downgrade or drop the conflicting dependency, and a host on spatie/laravel-permission 8 must either downgrade to 7.x or fork. Because there is no prior assessment, I recommend we record v10.0.0 as the version of record and treat any future major as the first true upgrade event.
Compatibility. Treat the release as compatibility-narrowing. It upgrades to newer majors in the Laravel/Filament/Livewire/Stripe family while pinning two dependencies downward. The net effect is a package that requires recent versions of some dependencies and caps others — a narrower resolvable window than the version numbers alone suggest. Verify by attempting a real composer update against our actual host composer.json rather than reasoning about it; dependency resolution failures here are cheap to discover and expensive to discover late.
Sequencing. I would sequence as: (1) resolve dependencies in a throwaway branch to confirm the graph closes against our host; (2) stand up the panel and walk the navigation and setup wizard manually — this is UI work and resists automated validation at low cost; (3) run a full payment regression against a Stripe test account, covering the OAuth/API config path in the wizard; (4) security-review the wizard's team and role provisioning; (5) only then adopt. Steps 1 and 3 are the gates.
Maintenance. The dependency pins are the main maintenance tax. Guzzle 7.x and spatie/laravel-permission 7.x are both upstream-blocked, which means this package cannot move on either axis until Socialstream/Socialite and the roles-permissions layer move first. We inherit that wait. Budget for periodic re-checks of both upstream projects, because the trigger for lifting the pin is external and will not announce itself.
Support. Two new support burdens arrive with this release: the navigation grouping and the setup wizard. The wizard is the more expensive of the two — guided accounts, teams, OAuth, and API configuration generate user questions that documentation handles poorly and screenshots handle well. Plan to produce onboarding documentation and screenshots in step with adoption, not after the first support tickets.
Scaling. No scaling concerns attach to this release. Navigation grouping and a setup wizard are per-user, low-throughput operations with no new background processing, queue, or storage surface described. The dependency upgrades do not change runtime scaling characteristics.
Failure modes. Three worth naming. First, silent payment regression — Stripe SDK majors can change error handling and webhook payload shapes without failing loudly; instrument the payment path and run the regression before adoption. Second, wizard misconfiguration — a user who opts into OAuth and API configuration incorrectly can produce a broken account state that is hard to diagnose and harder to unwind. Third, dependency deadlock — a future host upgrade forces a Guzzle or permission upgrade that this package cannot accept, presenting as an unresolvable composer conflict rather than a runtime error. That failure is loud and therefore the least dangerous of the three, but it is the one most likely to block an unrelated, urgent upgrade.
Ramp-up. Low. The navigation and wizard changes are conventional Filament work that a Laravel developer can absorb quickly. The genuinely unfamiliar territory is the wizard's authorization semantics — who can join which team, and what roles the wizard grants — which warrants security review rather than general Laravel experience. Allocate review time accordingly, and note that this assessment is inferred from release notes alone; the maintainer's actual test coverage and CI matrix are unknown and should be confirmed before we commit to step 5 above.
How can I help you explore Laravel packages today?