PHPackages                             lencione/laravel-modules - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Framework](/categories/framework)
4. /
5. lencione/laravel-modules

ActiveLibrary[Framework](/categories/framework)

lencione/laravel-modules
========================

Gerador de módulos para projetos Laravel com estrutura padronizada.

v0.1.0(1mo ago)099↑21.2%MITPHPPHP ^8.3|^8.4

Since May 2Pushed 1mo agoCompare

[ Source](https://github.com/Lencione/laravel-modules)[ Packagist](https://packagist.org/packages/lencione/laravel-modules)[ Docs](https://github.com/Lencione/laravel-modules)[ RSS](/packages/lencione-laravel-modules/feed)WikiDiscussions main Synced 1w ago

READMEChangelogDependencies (6)Versions (2)Used By (0)

Laravel Modules
===============

[](#laravel-modules)

Gerador de módulos para projetos Laravel com estrutura padronizada.

Cria a árvore `app/Modules/{Modulo}/` com pastas convencionadas e arquivos base a partir de stubs. Carrega automaticamente os arquivos de rotas (`web.php` e `api.php`) de cada módulo.

Requisitos
----------

[](#requisitos)

- PHP `^8.3 | ^8.4`
- Laravel `^11 | ^12 | ^13`

Instalação
----------

[](#instalação)

```
composer require lencione/laravel-modules
```

O `LaravelModulesServiceProvider` é registrado automaticamente via package discovery do Laravel. Não há nada para registrar manualmente.

O que o package faz
-------------------

[](#o-que-o-package-faz)

### 1. Comandos artisan

[](#1-comandos-artisan)

ComandoDescrição`make:module {nome} {pasta?}`Cria a estrutura completa do módulo (ou apenas uma pasta). Quando completa, também gera controller, requests Store/Update, resource, model, service e arquivos de rota.`module:action {modulo} {target}`Cria uma action.`module:controller {modulo} {target?}`Cria um controller. Sem `target`, usa `{modulo}Controller`.`module:event {modulo} {target}`Cria um event.`module:job {modulo} {target}`Cria um job.`module:listener {modulo} {target}`Cria um listener.`module:model {modulo} {target?}`Cria um model. Sem `target`, usa `{modulo}`.`module:request {modulo} {target}`Cria um FormRequest.`module:resource {modulo} {target?}`Cria um JsonResource. Sem `target`, usa `{modulo}Resource`.`module:route {modulo}`Cria os arquivos `web.php` e `api.php` do módulo.`module:rule {modulo} {target}`Cria uma ValidationRule.`module:service {modulo} {target?}`Cria um service. Sem `target`, usa `{modulo}Service`.Exemplos:

```
php artisan make:module Users
# Gera app/Modules/Users/{Actions,Controllers,Models,...} +
# UsersController, StoreUsersRequest, UpdateUsersRequest, UsersResource,
# Users (model), UsersService, web.php, api.php

php artisan module:action Users SendWelcomeEmail
# Gera app/Modules/Users/Actions/SendWelcomeEmail.php

php artisan module:request Users StoreUserRequest
# Gera app/Modules/Users/Requests/StoreUserRequest.php
```

Subdiretórios funcionam usando `/` no `target`:

```
php artisan module:service Users Auth/LoginService
# Gera app/Modules/Users/Services/Auth/LoginService.php
# Namespace: App\Modules\Users\Services\Auth
```

### 2. Auto-load de rotas

[](#2-auto-load-de-rotas)

Para cada `app/Modules/{Modulo}/Routes/web.php` e `api.php` encontrado, o package registra automaticamente as rotas:

- `web.php` → middleware `web`, sem prefixo
- `api.php` → middleware `api`, prefixo `api/`

### 3. `BaseService`

[](#3-baseservice)

Service genérico com CRUD básico em `Lencione\LaravelModules\Services\BaseService`.

```
namespace App\Modules\Users\Services;

use App\Modules\Users\Models\User;
use Lencione\LaravelModules\Services\BaseService;

class UsersService extends BaseService
{
    public function __construct()
    {
        parent::__construct(new User);
    }
}
```

Métodos disponíveis:

MétodoDescrição`getAll(?int $perPage = null)`Retorna paginado, ordenado por `id`. Aceita `perPage` opcional.`getAllWithoutPagination()`Retorna `Collection` completa, ordenada por `id`.`getById(int|string $id)`Retorna o item ou lança `ModelNotFoundException` (404 automático no Laravel).`store(array $validated)`Cria via `model->create()`.`update(int|string $id, array $validated)`Atualiza e retorna o model.`delete(int|string $id)`Deleta.Estrutura criada por `make:module`
----------------------------------

[](#estrutura-criada-por-makemodule)

```
app/Modules/{Modulo}/
├── Actions/
├── Controllers/
│   └── {Modulo}Controller.php
├── Events/
├── Jobs/
├── Listeners/
├── Models/
│   └── {Modulo}.php
├── Requests/
│   ├── Store{Modulo}Request.php
│   └── Update{Modulo}Request.php
├── Resources/
│   └── {Modulo}Resource.php
├── Routes/
│   ├── api.php
│   └── web.php
├── Rules/
├── Services/
│   └── {Modulo}Service.php
└── Views/

```

Customização
------------

[](#customização)

### Publicando os stubs

[](#publicando-os-stubs)

Se quiser editar os templates usados na geração:

```
php artisan vendor:publish --tag=laravel-modules-stubs
```

Os arquivos vão para `stubs/` na raiz do projeto. O package usa primeiro os stubs locais; se não existirem, cai nos do package.

Stubs disponíveis:

- `module-action.stub`
- `module-controller.stub`
- `module-event.stub`
- `module-job.stub`
- `module-listener.stub`
- `module-model.stub`
- `module-request.stub`
- `module-resource.stub`
- `module-route.stub`
- `module-rule.stub`
- `module-service.stub`

Placeholders disponíveis nos stubs:

- `{{ module }}` — namespace relativo (ex: `Users\Controllers\Auth`)
- `{{ target }}` — nome final da classe (ex: `LoginController`)
- `{{ module_lower }}` — nome do módulo em minúsculas (ex: `users`)

### Publicando o config

[](#publicando-o-config)

```
php artisan vendor:publish --tag=laravel-modules-config
```

Gera `config/modules.php`:

```
return [
    'path' => app_path('Modules'),

    'folders' => [
        'Actions', 'Controllers', 'Models', 'Requests', 'Resources',
        'Rules', 'Events', 'Listeners', 'Jobs', 'Routes', 'Services', 'Views',
    ],

    'routes' => [
        'web' => [
            'enabled' => true,
            'middleware' => ['web'],
            'prefix' => null,
        ],
        'api' => [
            'enabled' => true,
            'middleware' => ['api'],
            'prefix' => 'api',
        ],
    ],
];
```

Opções:

- `path` — onde os módulos vivem.
- `folders` — pastas criadas por `make:module`.
- `routes.{web,api}.enabled` — desliga o auto-load se quiser.
- `routes.{web,api}.middleware` — middlewares aplicados ao grupo.
- `routes.{web,api}.prefix` — prefixo aplicado ao grupo. Suporta o token `{module}` que será substituído pelo nome do módulo em minúsculas.

Licença
-------

[](#licença)

MIT

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance92

Actively maintained with recent releases

Popularity14

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity41

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

39d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/23f1a69b3dc22f145302a8b6639512659604600c45f28dd915d1e588c9fba448?d=identicon)[Lencione](/maintainers/Lencione)

---

Top Contributors

[![Lencione](https://avatars.githubusercontent.com/u/44005188?v=4)](https://github.com/Lencione "Lencione (1 commits)")

---

Tags

laravelgeneratorscaffoldmodulesstructure

###  Code Quality

TestsPest

### Embed Badge

![Health badge](/badges/lencione-laravel-modules/health.svg)

```
[![Health](https://phpackages.com/badges/lencione-laravel-modules/health.svg)](https://phpackages.com/packages/lencione-laravel-modules)
```

###  Alternatives

[laravel/ai

The official AI SDK for Laravel.

9782.1M153](/packages/laravel-ai)[larastan/larastan

Larastan - Discover bugs in your code without running it. A phpstan/phpstan extension for Laravel

6.4k51.0M7.4k](/packages/larastan-larastan)[laravel/passport

Laravel Passport provides OAuth2 server support to Laravel.

3.4k89.4M569](/packages/laravel-passport)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.5k28.4M134](/packages/laravel-cashier)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k14.1M120](/packages/laravel-pulse)[spatie/laravel-health

Monitor the health of a Laravel application

88011.3M149](/packages/spatie-laravel-health)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
