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)2914↓35.7%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 2d 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 75% of packages

Maintenance38

Infrequent updates — may be unmaintained

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

535d 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

[laravel/octane

Supercharge your Laravel application's performance.

4.0k26.6M223](/packages/laravel-octane)[unopim/unopim

UnoPim Laravel PIM

10.5k2.4k](/packages/unopim-unopim)[artem-schander/l5-modular

Modular pattern generator for Laravel

223241.9k](/packages/artem-schander-l5-modular)[nasirkhan/laravel-starter

A CMS like modular Laravel starter project.

1.4k2.7k](/packages/nasirkhan-laravel-starter)[ecotone/laravel

Ecotone for Laravel — CQRS, Event Sourcing, Sagas, Durable Workflows, and Outbox on top of Laravel Queue, via PHP attributes.

21318.6k3](/packages/ecotone-laravel)[codewithdennis/larament

Larament is a time-saving starter kit to quickly launch Laravel 13.x projects. It includes FilamentPHP 5.x pre-installed and configured, along with additional tools and features to streamline your development workflow.

3891.8k](/packages/codewithdennis-larament)

PHPackages © 2026

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