artem-schander/l5-modular
l5-modular is a Laravel package for building modular applications with self-contained modules. It provides module generation, autoloading, and service provider registration so each feature lives in its own namespace, keeping large projects organized and maintainable.
Modules/Billing, Modules/Onboarding) rather than by layer (Http/, Models/). It makes that decision cheap to trial by scaffolding module skeletons via Artisan.make:module generator and own it, rather than depending on it.Consider it when all of the following hold:
Look elsewhere (or skip it) when:
nwidart/laravel-modules is the mature, actively maintained default and has a real ecosystem.For executives (one paragraph): This is a small, MIT-licensed code generator that helps teams structure a Laravel codebase into domain modules instead of one flat application. The strategic value is organizational, not technical: clear module boundaries let multiple teams work in parallel, make scope and ownership legible, and shorten onboarding on large codebases. The package itself is a starter pattern, not infrastructure — it was last released in 2021, has a single maintainer, and no downstream dependents. Recommendation: do not adopt it as a production dependency. Instead, use it as a reference implementation and spend a short, bounded effort (roughly one to two sprints of platform work) internalizing the generator so we own the convention. The real decision on the table is whether modular monolith structure is on our architecture roadmap — if it is, owning a ~500-line generator is cheap; if it isn't, this package is a distraction.
For engineering (the honest version): 216 stars, one maintainer, last release July 2021, zero dependents — that combination means no compatibility guarantees for modern Laravel, no community triage, and no upgrade path. The upside is that the surface area is tiny and the code is legible: Artisan commands plus stubs for plain-PHP and Composer-style modules. Two viable paths: (1) Vendor the stubs into stubs/ with our own make:module command and take on ownership — recommended, low cost, no external dependency; (2) if we want a maintained runtime module system with activation, providers, and publishing, evaluate nwidart/laravel-modules instead and treat this package as prior art. Do not add it to composer.json as a runtime requirement. Whichever path we take, pair it with a written boundary-convention doc and a CI check that enforces module isolation, otherwise the structure decays within two quarters regardless of the tooling.
How can I help you explore Laravel packages today?