Appearance
Creating Modules
This documentation provides guidelines for creating modules compatible with the Module Manager (MM) using the Skeleton module template.
Skeleton Module
The Skeleton module serves as a template for creating new modules in the system. It provides a streamlined structure and a convenient command-line tool to quickly generate new modules based on this template.
Module Structure
The Skeleton module contains a basic structure that follows best practices for module development:
- Configuration files
- Service provider setup
- Basic directory structure
- Composer configuration
- Module manifest
Creating a New Module
Using the Module Builder Command
The easiest way to create a new module is to use the built-in module-build command:
bash
php artisan module-buildThis interactive command will:
- Ask for your module name
- Create a properly structured module based on the Skeleton template
- Register the module with the system
Command Options
You can also specify the module name directly with the --name option:
bash
php artisan module-build --name=MyNewModuleWhat the Command Does
The module-build command performs the following operations:
- Creates a new module directory based on the provided name
- Copies all files from the Skeleton module to the new module
- Renames files and directories by replacing "Skeleton" with your module name
- PascalCase substitution: "Skeleton" → "YourModuleName"
- Lowercase substitution: "skeleton" → "yourmodulename"
- Updates file contents to replace all occurrences of "Skeleton" with your module name
- Updates specific files:
composer.json: Updates package name and namespacesmodule.json: Updates name, alias, and provider paths- Service Provider: Updates namespace, class name, and properties
- Cleans up:
- Removes
.gitdirectory if it exists - Removes
vendordirectory if it exists - Removes the
ModuleBuildCommandfrom the new module
- Removes
- Registers the module:
- Updates
modules_statuses.jsonto enable the new module
- Updates
- Updates autoloader:
- Runs
composer dump-autoloadto register the new namespaces
- Runs
After Module Creation
Once your new module is created, it will be:
- Properly registered in the system
- Ready for development
- Accessible through its namespace (
Modules\YourModuleName)
You can then add your specific functionality to the new module.
Setting Up a Remote Repository
After creating your module, you should set up a Git repository:
bash
# Navigate to the module directory
cd Modules/YourModuleName
# Initialize Git if not already done
git init
# Add all files
git add .
# Make initial commit
git commit -m "Initial module setup from skeleton"
# Add remote repository (create this on GitHub first)
git remote add origin https://github.com/e2tmk/newmodule-module.git
# Push to remote
git branch -M main
git push -u origin mainModule Registration in Module Manager
To make your module available for installation in other applications:
- Register it in the Module Manager Panel
- Ensure you follow the naming convention with the
-modulesuffix for your repository
Best Practices
- Maintain the standard directory structure for new modules
- Follow the naming conventions established by the Skeleton module
- Include all package dependencies in your module's
composer.json - Use Module Manager's traits to properly integrate with multi-tenancy
- Add detailed documentation in your module's README.md
Example
To create a new "Reports" module:
bash
php artisan module-build --name=ReportsThis will create a fully functional Reports module with all necessary files and configurations.