idel/laravel-modular
idel/laravel-modular brings a structured module system to Laravel, letting you split large applications into self-contained packages with their own routes, views, migrations, config, and service providers, so features stay organized, reusable, and easy to enable or disable.
nwidart/laravel-modules), (c) hand-roll a module convention, (d) do nothing and let the app grow organically. Because this is MIT and small, "buy" here really means "vendor a convention" — the switching cost is low, which de-risks the decision.Consider it when:
Look elsewhere when:
nwidart/laravel-modules is the safer default there, and Laravel's own package/service-provider conventions cover a surprising amount for free.Adoption gate I'd apply: a one-sprint spike, one real module migrated, and a written exit plan (how we'd unwind to plain Laravel if it's abandoned). If the spike doesn't pay for itself, default to the incumbents.
For executives: This is a low-cost architectural bet, not a vendor commitment. It lets us organize a growing Laravel application into self-contained modules so multiple teams can ship in parallel without splitting into microservices — which keeps infrastructure and headcount flat while the product scales. The package is MIT-licensed and small, so the downside is capped: worst case we absorb a few files and keep the structure. The real risk isn't the license or the price; it's that the package is maintained by one person with little visible adoption, so we should treat it as a pattern we adopt and own rather than a dependency we rely on. Recommendation: fund a one-sprint spike on a single module, with a documented fallback. If the spike holds, it unlocks parallel delivery across the next two quarters; if it doesn't, we've spent days, not a quarter.
For engineering: The value is enforced boundaries — each module carries its own providers, routes, migrations, and config, so coupling is visible in code review instead of discovered during a refactor. That makes onboarding faster and reduces cross-team merge conflicts. The honest caveats: last release was late 2023, effectively no downstream users, and one maintainer. So we pin the version, read the source before adopting, and isolate it behind our own conventions so a fork or replacement is a contained change. Compare it head-to-head with nwidart/laravel-modules and with doing nothing during the spike — the burden of proof is on adoption, not on the status quo.
How can I help you explore Laravel packages today?