mangosoft/modules

A lightweight modular system for Laravel that helps you organize your application into independent, self-contained modules. Each module has its own Controllers, Models, Providers, Views, and Routes, making large-scale apps easier to manage, scale, and maintain.

Maintainers

Package info

github.com/Leotrin/module

pkg:composer/mangosoft/modules

Statistics

Installs: 2

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.1 2025-09-14 10:19 UTC

This package is auto-updated.

Last update: 2026-03-14 11:38:27 UTC


README

A lightweight modular system for Laravel that helps you organize your application into independent, self-contained modules. Each module has its own Controllers, Models, Providers, Views, and Routes, making large-scale apps easier to manage, scale, and maintain.

✨ Features

  • Generate modules easily with folder structure (Controllers, Models, Providers, Views, Routes).
  • Automatic autoloading via Modules\\ namespace.
  • Per-module ServiceProvider bootstrapping.
  • php artisan make:module {name} --api → API-only module (controller + routes/api.php).
  • Migration file generation per module.
  • php artisan module:list → Show all modules in /modules with status.
  • php artisan module:remove {name} → Safely remove modules.

📦 Installation

  1. Install via Composer (if you package this later):

    composer require mangosoft/modules

    Or if it’s internal:

    • Copy the package into your Laravel project.
    • Add the service provider in bootstrap/providers.php if not auto-discovered.

🚀 Usage

Create a Module

php artisan make:module Blog

This will generate:

/modules
  └── Blog
      ├── Controllers
      ├── Models
      ├── Providers
      ├── Routes
      └── Views

Extend with creating an API Module

php artisan make:module Blog --api

Generates also:

/modules/Blog
  ├── Controllers/Api
  └── Routes/api.php

Generate a Migration

Inside a module, run:

php artisan make:migration create_posts_table --module=Blog

List All Modules

php artisan module:list

Displays available modules with status.

Remove a Module

php artisan module:remove Blog

🗂 Folder Structure

/modules
  └── {ModuleName}
      ├── Controllers
      ├── Models
      ├── Providers
      ├── Routes
      │   ├── web.php
      │   └── api.php
      └── Views

🔧 Example

Creating a module named Blog:

php artisan make:module Blog

Then register routes in /modules/Blog/Routes/web.php:

Route::get('/blog', [\Modules\Blog\Controllers\BlogController::class, 'index']);

And define the controller in /modules/Blog/Controllers/BlogController.php:

namespace Modules\Blog\Controllers;

use App\Http\Controllers\Controller;

class BlogController extends Controller
{
    public function index()
    {
        return view('Blog::index');
    }
}

📌 Roadmap

  • Add module publishing (config, assets).
  • Module enable/disable support.
  • Module testing scaffolding.

📝 License

This project is open-sourced under the MIT license.