Weave Code
Weaver
Helps Laravel developers discover, compare, and choose open-source packages. See popularity, security, maintainers, and scores at a glance to make better decisions.
Feedback
Share your thoughts, report bugs, or suggest improvements.
Subject
Message

Laravel Modules Laravel Package

aiwozhe/laravel-modules

Organize Laravel apps into self-contained modules with their own controllers, models, views, migrations, routes, and config. Includes Artisan commands to scaffold, publish, enable, disable, and manage modules, making large codebases easier to structure, reuse, and maintain.

View on GitHub
Deep Wiki
Context7

Product Decisions This Supports

  • Modular monolith vs. microservices: Informs whether to keep a single deployable Laravel application while enforcing domain boundaries, versus splitting into services. This package is the pragmatic middle path — module-level isolation without distributed systems overhead.
  • Build vs. buy: Replacing an in-house module loader (custom service providers, custom autoloading, custom config) with a maintained MIT package. Buy is the default answer here; the build case only survives if module semantics must differ radically from Laravel conventions.
  • Framework upgrade timing: The package now ships Laravel 13.x compatibility (v13.0.0), which means our Laravel upgrade roadmap and our module-architecture choice are coupled. If we adopt, "upgrade Laravel" becomes a two-dependency operation planned together, not one.
  • Team topology and ownership: Enables assigning modules to squads (Billing, Catalog, Notifications, Reporting) with clear code ownership, independent roadmaps, and reduced merge contention on a shared codebase.
  • Roadmap sequencing for multi-product portfolios: Supports deciding whether new product lines ship as new modules in one app (fast, shared infrastructure) or as separate applications (isolated blast radius, duplicated infra).
  • White-label / tenant-specific feature packaging: Makes it viable to ship optional modules per customer tier or industry vertical, activated by configuration rather than branched codebases.
  • Extension and plugin strategy: Underpins decisions on whether to expose extensibility to internal teams or third parties via self-contained modules.
  • Release scoping and rollback: Modules make it easier to isolate what changed, feature-flag by module, and reduce regression surface — relevant to release cadence commitments.
  • Technical debt triage: Gives a concrete migration target for untangling a legacy Laravel app where domain logic is spread across global controllers, models, and service providers.
  • Onboarding investment: Each new engineer learns one module rather than the whole application, which affects hiring plans and ramp-up time assumptions in staffing models.

When to Consider This Package

Strong fit when:

  • You run a Laravel application that has outgrown a single team's coordination capacity — roughly multiple squads, or one team maintaining several distinct business domains.
  • You want domain boundaries now but are not ready to pay the operational cost of separate services, separate databases, or separate release pipelines.
  • You have a long-lived codebase (multi-year roadmap) where structural conventions compound in value.
  • You ship a product with clearly separable feature areas, optional add-ons, or per-tenant module activation.
  • Your team is already fluent in Laravel service providers, Composer autoloading, and artisan conventions — the package extends these rather than replacing them.
  • You are standardizing architecture across several Laravel applications and want one shared convention for module structure, migrations, routes, and assets.
  • You are on, or planning to move to, a current Laravel major. v13.0.0 tracks Laravel 13.x, and the package has historically followed Laravel majors closely — that cadence is the thing you are actually buying into.
  • You are consciously accepting a community-maintained dependency and have a plan for version pinning and upgrade testing.

Look elsewhere when:

  • The application is small, single-team, or early-stage — module scaffolding adds ceremony and directory depth with little payoff. Plain Laravel folders (app/Domain/...) or a lightweight convention without a module loader is cheaper.
  • Your real need is package separation (reusable libraries across applications), not module separation within one application. Composer path repositories or private Packagist solve that more directly.
  • You are committed to microservices, event-driven boundaries, or independent deployability. Modules share a process, a database, and a release — that is the point, and it is also the limitation.
  • The team has no appetite for architectural governance. Modules degrade into renamed folders if boundary rules (no cross-module model imports, communication via contracts/events) are not enforced in review and CI.
  • You need vendor-backed SLAs, guaranteed security patch timelines, or long-term commercial support. This is MIT community software; support comes from maintainers and the ecosystem.
  • You depend on heavy Laravel ecosystem packages with their own assumptions about app/ paths and autoload maps; validate integration before committing.
  • Performance or boot-time budgets are extremely tight and you cannot absorb additional provider registration and discovery overhead at scale.
  • You are pinned to an older Laravel major and cannot move. Major versions of this package track Laravel majors (v13.0.0 = Laravel 13.x), so staying on Laravel 12 or below means staying on the prior package major — verify the support window before assuming patches will continue.

Adoption checklist before committing:

  • Pin the package major to your Laravel major and schedule them in the same upgrade window. v13.0.0 is a compatibility release (Laravel 13.x support, no new module features reported), so the migration cost from v12 is expected to be low — but confirm against the changelog before committing.
  • Prototype one real module end-to-end (migrations, routes, policies, queues, tests) rather than scaffolding an empty one.
  • Confirm CI, static analysis (PHPStan/Larastan), and test tooling understand module namespaces.
  • Decide and document the boundary rules up front; write them into the engineering handbook.
  • Confirm the maintainer's release cadence against your own upgrade policy — recent Laravel-major compatibility work and first-time contributions from the Laravel community are a positive signal on maintenance health, not a guarantee.

How to Pitch It (Stakeholders)

For executives — the one-paragraph version: This is a mature, MIT-licensed, widely adopted Laravel package that lets us structure our application into independent business modules inside a single deployable system. It costs nothing in licensing, requires no new infrastructure, and preserves our current hosting and deployment model. It has just shipped support for the current Laravel major, which tells us the maintenance is active and the upgrade path is being tracked. The business return is organizational: multiple squads can own separate parts of the product and ship in parallel without stepping on each other, and we can package optional capabilities for different customer segments without forking the codebase. The principal risk is discipline, not technology — boundaries only hold if we enforce them in code review and CI.

For engineering leadership — why it's the right lever:

  • Low lock-in: it extends standard Laravel conventions (service providers, Composer autoloading, artisan), so the migration path off it is incremental, not a rewrite.
  • It buys us architectural clarity at the cost of a directory convention and some boot-time overhead — dramatically cheaper than a service-oriented split at our current scale.
  • It gives us a defensible answer to "where does this code live?" and a natural seam for future extraction if a module ever genuinely needs to become a service.
  • The v13.0.0 release is a compatibility bump for Laravel 13.x, not a feature release — which is the healthiest kind of major we can see from a dependency like this. It also means our Laravel upgrade cadence and this package's release cadence should be planned as one item, not two.
  • The trade-off we accept: shared process, shared database, coupled releases, and a community-maintained dependency whose major versions follow Laravel's. Those are acceptable at our scale today and reversible later; a microservices migration is not.

What we are asking for: A time-boxed spike (one real module extracted end-to-end, plus CI and static-analysis validation) and agreement on module boundary conventions. No new infrastructure, no license spend, no vendor contract — the investment is engineering discipline and a small amount of onboarding.

Weaver

How can I help you explore Laravel packages today?

Conversation history is not saved when not logged in.
Prompt
Add packages to context
No packages found.
gmostafa/php-graphql-client
xeviant/paystack
snowsoft/faker
meditationsteps/blogetc
animalyoung/laravel-influxdb
onix-solutions/sms-telera
lonely-lights/prosetta
oxygen/data
oxygen/core
jengo/base
xiloryx/log-collector
a21ns1g4ts/filament-stripe
la-php/laravel-admin
artisan-build/community-prompts
vleroy/smart
ayles-software/laravel-australian-public-holidays
cboxdk/laravel-id-spatie
cboxdk/laravel-id-billing
cboxdk/laravel-id-billing-bridge
simple-as-fuck/php-performance-log