PHPackages                             kascat/easy-module - 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. kascat/easy-module

ActiveLibrary[Framework](/categories/framework)

kascat/easy-module
==================

Easy modular structure for laravel

1.2.1(1y ago)2820↓50%1MITPHPPHP ^8.0

Since Sep 8Pushed 1y ago1 watchersCompare

[ Source](https://github.com/kascat/easy-module)[ Packagist](https://packagist.org/packages/kascat/easy-module)[ Docs](https://github.com/kascat)[ RSS](/packages/kascat-easy-module/feed)WikiDiscussions main Synced 1mo ago

READMEChangelog (4)Dependencies (1)Versions (5)Used By (0)

Easy Module
===========

[](#easy-module)

[![Latest Stable Version](https://camo.githubusercontent.com/bc19edd50cc9669d1a9363ece14a3ff1e5d7c1ca72e6bc8e7ecfa59cd8caf682/68747470733a2f2f706f7365722e707567782e6f72672f6b61736361742f656173792d6d6f64756c652f76)](https://packagist.org/packages/kascat/easy-module)[![Total Downloads](https://camo.githubusercontent.com/9f7aef7509be6a7da9512e5bf4f680c7af5bed47efa94da49a0ab457539bbd64/68747470733a2f2f706f7365722e707567782e6f72672f6b61736361742f656173792d6d6f64756c652f646f776e6c6f616473)](https://packagist.org/packages/kascat/easy-module)[![Latest Unstable Version](https://camo.githubusercontent.com/3259190a4bc2e75daee4ec85deaa333ee65e5839bb44f11bca29c3dca2051689/68747470733a2f2f706f7365722e707567782e6f72672f6b61736361742f656173792d6d6f64756c652f762f756e737461626c65)](https://packagist.org/packages/kascat/easy-module)[![License](https://camo.githubusercontent.com/b2c5c76c69c84c8d0d9d010aa0c15d022f90fcc3e5dacce89ed39695f8b44155/68747470733a2f2f706f7365722e707567782e6f72672f6b61736361742f656173792d6d6f64756c652f6c6963656e7365)](https://packagist.org/packages/kascat/easy-module)[![PHP Version Require](https://camo.githubusercontent.com/8623fe28b543820843b7848735279f98b9ba560b57b198badabc44564154861b/68747470733a2f2f706f7365722e707567782e6f72672f6b61736361742f656173792d6d6f64756c652f726571756972652f706870)](https://packagist.org/packages/kascat/easy-module)

Estrutura modular para o framework Laravel.

A estrutura modular oferece maior organização no projeto, centralizando o código de cada funcionalidade/feature em apenas um lugar, facilitando a criação e manutenção de projetos grandes e pequenos.

O pacote **Easy Module** não limita a utilização da estrutura padrão de arquivos do Laravel, podendo ser implementado em projetos novos e em andamento.

---

Instalação e configuração
-------------------------

[](#instalação-e-configuração)

Para instalar o pacote **Easy Module** basta seguir os três passos a seguir:

#### 1. Instalação via composer

[](#1-instalação-via-composer)

```
composer require "kascat/easy-module"
```

#### 2. Configuração do Provider

[](#2-configuração-do-provider)

O Provider do **Easy Module** disponibiliza alguns comandos artisan para auxiliar na criação dos módulos, além de fazer a leitura automática das rotas mapeadas nos arquivos `api.php` e `web.php` em cada módulo, e dos comandos personalizados no arquivo `console.php` (caso opte em adicionar no seu módulo).

Para isso, adicione a classe abaixo na sessão `providers` do arquivo `config/app.php`.

```
Kascat\EasyModule\Core\ModularServiceProvider::class
```

Exemplo:

```
'providers' => [
    // ...Outros providers existentes

    Kascat\EasyModule\Core\ModularServiceProvider::class
]
```

Porém, se optar em fazer o mapeamento de rotas e comandos personalisados de outra maneira, e não quiser que o **Easy Module** faça esse trabalho, adicione a classe abaixo na sessão `providers` do arquivo `config/app.php`.

```
Kascat\EasyModule\Core\ModularCommandServiceProvider::class
```

Essa classe libera apenas os comandos artisan do **Easy Module**, para auxiliar na criação dos módulos.

Exemplo:

```
'providers' => [
    // ...Outros providers existentes

    Kascat\EasyModule\Core\ModularCommandServiceProvider::class
]
```

#### 3. Registre a pasta `modules` na configuração `psr-4` do arquivo `composer.json` presente na raiz do seu projeto

[](#3-registre-a-pasta-modules-na-configuração-psr-4-do-arquivo-composerjson-presente-na-raiz-do-seu-projeto)

```
"": "modules/"
```

Exemplo:

```
"autoload": {
  "psr-4": {
    "": "modules/",
    "App\\": "app/",
  }
},
```

Criação de módulos
------------------

[](#criação-de-módulos)

Para criar um módulo completo basta executar o comando `php artisan easy:module [nome do módulo]`que irá gerar a estrutura padrão, porém o pacote **Easy Module** oferece uma lista de comandos, que auxiliam na criação da estrutura e dos arquivos do seu módulo separadamente.

Os arquivos já são gerados com uma estrutura funcional de criação, leitura, edição, e exclusão (CRUD) para a tabela do seu banco de dados que está relacionada a *model* do módulo, apenas será necessário configurar a *model* e o *request* com as propriedades da tabela.

#### Comandos:

[](#comandos)

Criação de módulo completo com os principais arquivos:

```
php artisan easy:module [nome do módulo]
```

Criação de *Controller* e dos arquivos relacionados (Controller, Request, Response, Api Route):

```
php artisan easy:controller [nome do módulo]
```

Criação de *Model*:

```
php artisan easy:model [nome do módulo]
```

Criação de *Service* e *Repository*:

```
php artisan easy:service [nome do módulo]
```

Criação de arquivos de rota (api.php e web.php):

```
php artisan easy:route [nome do módulo]
```

Criação de arquivo de comandos *artisan* (console.php):

```
php artisan easy:command [nome do módulo]
```

#### Substituição de arquivos:

[](#substituição-de-arquivos)

O mesmo comando pode ser executado mais de uma vez para um módulo, porém os arquivos que já existirem não serão substituídos, serão criados novos arquivos com um sufixo único no nome, que podem ser adequados posteriormente.

Para que aconteça a substituição de um arquivo existente rode o comando com a flag `--overwrite` ou `-O`

Exemplo:

```
php artisan easy:module sample -O
```

Estrutura
---------

[](#estrutura)

A estrutura modular é bem simples de se entender, cada módulo contém arquivos com uma finalidade específica.

Abaixo se encontra um exemplo da estrutura de um módulo (Sample), gerado com o comando: `php artisan easy:module sample`

```
> modules
  > Samples
      api.php
      Sample.php
      SampleController.php
      SampleRepository.php
      SampleRequest.php
      SampleResponse.php
      SampleService.php

```

> Caso o seu módulo não utilize algum dos arquivos criados automaticamente, ele pode ser removido, apenas se atente em alguma referência que possa ter ficado em outros arquivos que o utilizam.

### Responsabilidades

[](#responsabilidades)

Abaixo segue a responsabilidade de cada arquivo no módulo.

#### Model

[](#model)

O arquivo/classe model segue o mesmo padrão/estrutura das models originais do Laravel, se comunicando com a tabela do seu banco de dados, e realizando a definição das propriedades e relacionamentos normalmente.

O nome do arquivo e da classe recebe o nome do módulo no singular, ex: `User.php` `User::class`

#### Controller

[](#controller)

O arquivo de controller também se comporta da mesma forma que as controllers tradicionais, ficando responsável em conter as funções que as rotas chamarão. Porém, com o diferencial de validar as requisições e formatar as respostas com uso dos arquivos apropriados (Request e Response).

#### Request

[](#request)

Utilizado para realizar as validações dos dados recebidos das requisições de cada rota.

#### Response

[](#response)

Utilizado para realizar formatações ou modificações nos dados de resposta da rota.

#### Repository

[](#repository)

O repository tem somente a responsabilidade de montar as *queries* que serão executadas do banco de dados.

#### Service

[](#service)

O service fica com a responsabilidade de conter a lógica principal (regra de negócio) do módulo.

#### Api e Web

[](#api-e-web)

Os arquivos de rota `api.php` e `web.php` são utilizados para registrar as rotas do módulo, da mesma forma que são definidas nos arquivos `routes/api.php` e `routes/web.php` do Laravel.

#### Console

[](#console)

O arquivo `console.php` é utilizado para criar comandos personalizados relacionados ao módulo, e pode ser utilizado da mesma forma que o arquivo `routes/console.php` do Laravel, podendo ser agendado normalmente em `app/Console/Kernel.php`.

###  Health Score

34

—

LowBetter than 77% of packages

Maintenance41

Moderate activity, may be stable

Popularity21

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity55

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

Every ~286 days

Total

4

Last Release

489d ago

PHP version history (2 changes)1.0PHP ^7.1 || ^8.0

1.2PHP ^8.0

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/19480036?v=4)[Fabio Dukievicz](/maintainers/kascat)[@kascat](https://github.com/kascat)

---

Top Contributors

[![kascat](https://avatars.githubusercontent.com/u/19480036?v=4)](https://github.com/kascat "kascat (26 commits)")

---

Tags

laravelmodulemodulareasy module

### Embed Badge

![Health badge](/badges/kascat-easy-module/health.svg)

```
[![Health](https://phpackages.com/badges/kascat-easy-module/health.svg)](https://phpackages.com/packages/kascat-easy-module)
```

###  Alternatives

[internachi/modular

Modularize your Laravel apps

1.1k662.4k8](/packages/internachi-modular)[artem-schander/l5-modular

Modular pattern generator for Laravel

223235.5k](/packages/artem-schander-l5-modular)[mhmiton/laravel-modules-livewire

Using Laravel Livewire in Laravel Modules package with automatically registered livewire components for every modules.

236409.6k9](/packages/mhmiton-laravel-modules-livewire)[pingpong/modules

Laravel Modules

592188.7k13](/packages/pingpong-modules)[php-soft/laravel-users

Laravel Users Module

195.0k](/packages/php-soft-laravel-users)

PHPackages © 2026

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