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
Module Manager

Module Manager Laravel Package

nasirkhan/module-manager

Powerful module management for Laravel Starter: track versions, manage migrations, resolve dependencies, and run the full module lifecycle with artisan commands like status, enable, disable, publish, and build.

View on GitHub
Deep Wiki
Context7

Module Manager is a powerful module management package built for Laravel Starter that handles version tracking, migration management, dependency resolution, and the full module lifecycle. It gives you artisan commands to inspect module status, check dependencies, publish modules into Modules/ for customization, and compare package versions against published copies.

  • Lifecycle commands to enable, disable, build, and remove modules
  • Migration tools for baselining state, detecting post-update migrations, and spotting unpublished ones
  • Dependency checks via module:dependencies before installing or removing a module
  • Version diffing with module:diff (including a --detailed view)
  • Scaffolding for tests and new modules, plus a built-in module:help reference
Frequently asked questions about Module Manager
What is nasirkhan/module-manager used for?
It is a module management package built specifically for the Laravel Starter application skeleton. It handles version tracking, migration management, dependency resolution, and the full module lifecycle through artisan commands such as module:status, module:publish, and module:dependencies. Modules live in a Modules/ directory with a module.json manifest and are discovered by a service provider and loaded in priority order. Despite the name, it is not a general-purpose modularisation library. It also bundles domain modules (Post, Category, Tag, Menu, ActivityLog), and since v7.0.0 it pulls intervention/image-laravel and spatie/laravel-activitylog in as direct dependencies.
How do I install and set up module-manager?
Run composer require nasirkhan/module-manager, then php artisan module:status to list modules with their versions and dependencies. Follow with php artisan module:dependencies to verify requirements are satisfied and php artisan migrate to run pending migrations. Modules are then loaded from the Modules/ directory via PSR-4 mapping for the Modules namespace.
Does module-manager work with any Laravel app or only Laravel Starter?
It is designed around Laravel Starter and its opinionated HMVC convention: modules in Modules/, a module.json manifest, and discovery through a service provider. It is a good fit for greenfield apps already structured that way, and a poor fit for existing monoliths built around the app/ directory. You can technically require it in any app, but the value comes from adopting the convention, not from the package alone.
Which PHP and Laravel versions does module-manager require?
It requires PHP ^8.3 and Laravel ^12.0 or ^13.0. Because the constraint tracks the two most recent Laravel majors, you inherit the maintainer's upgrade cadence. If a new Laravel major ships before the package is updated, you are blocked at the framework level rather than at the package level.
Can I use module-manager alongside nwidart/laravel-modules?
No, running both is not a defensible plan. The two packages occupy the same namespace of concerns but use incompatible manifests and discovery mechanisms. Pick one; if your team is already standardised on nwidart/laravel-modules, module-manager is not the right fit.
What artisan commands does module-manager provide?
Core commands include module:status, module:dependencies, module:publish, module:diff, module:enable, module:disable, module:build, module:remove, module:make-test, and module:help. Migration commands include module:track-migrations, module:detect-updates, and module:check-migrations. Together they cover inspection, dependency checking, publishing, test scaffolding, and the enable, disable, and remove lifecycle.
What does module:publish do and can I undo it?
module:publish copies a module into Modules/ and rewrites namespaces from Nasirkhan\ModuleManager\Modules\{Module} to Modules\{Module}, after which you run composer dump-autoload and config:clear. It produces a permanent fork in your repository, which is exactly why module:diff exists to compare the package version against the published copy. Extensions written before publishing do not survive a re-publish, and customisations made after publishing are not surfaced as conflicts by module:diff, so treat publishing as a deliberate one-way step.
How does module-manager resolve dependencies between modules?
Each module declares its name, alias, priority, and requires in a module.json manifest, and modules are loaded by a service provider in priority order. module:dependencies checks that those requirements are satisfied before you install or remove a module. The exact resolution algorithm, including whether it is topological and how a requires cycle behaves at boot, is not documented, so verify cycles explicitly against your own module graph.
How does module-manager track module migrations?
module:track-migrations records the current migration state as a baseline through MigrationTracker, module:detect-updates finds new migrations after a composer update, and module:check-migrations reports unpublished migrations. This creates a second source of truth alongside Laravel's own migrations table. The README documents detection but not rollback or recovery, so define a recovery path before editing a published migration or disabling a module mid-upgrade.
Is module-manager production ready and well maintained?
It has a single maintainer, roughly 10 GitHub stars, and zero Packagist dependents, so there is no third-party production signal to lean on. Every upgrade is effectively a re-vendoring exercise, and there is no community patch set or Stack Overflow corpus to fall back on. That does not make it unusable, but it means you own the risk, so pin versions and review changes between releases carefully.
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.
coleus/frame
thtg88/journalism
filagora/filagora-ai-forums
rlacerda83/query-parser
socialdept/atp-orm
cboxdk/laravel-assistant-client
socialdept/atp-resolver
socialdept/tenant-domains
tautvydasr/blade-class-names
socialdept/color-scales
maherelgamil/controller
coleus/widgets
coleus/table
coleus/users
coleus/music
coleus/health
coleus/calendar
coleus/notes
coleus/support
coleus/settings