PHPackages                             dvidev/base-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. dvidev/base-module

ActiveLaravel-module[Framework](/categories/framework)

dvidev/base-module
==================

laravel base module. Support for another dvi modules

v2.0.31(7mo ago)1239PHP

Since May 26Pushed 7mo ago1 watchersCompare

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

READMEChangelog (5)DependenciesVersions (79)Used By (0)

base-module
===========

[](#base-module)

laravel base module

Objetivo
--------

[](#objetivo)

O objetivo deste módulo é fornecer uma convenção de desenvolvimento para a criação de módulos do Laravel que podem ser usados em qualquer projeto Laravel.

Ele oferece uma estrutura base para o desenvolvimento de módulos do Laravel, incluindo os seguintes componentes:

### BaseModel - Classe base para modelos

[](#basemodel---classe-base-para-modelos)

A classe BaseModel tem o objetivo de entregar funcionalidades base para modelos

### BaseMigration

[](#basemigration)

A classe BaseMigration entrega a possibilidade de criar tabelas via Entidades

### BaseSeeder

[](#baseseeder)

A classe BaseSeeder fornece metodos para melhorar o feedback dos seeders mostrando uma barra de progresso principalmente para uma abundância de registros

### BaseRepository

[](#baserepository)

A classe BaseRepository tem o objetivo de desencorajar o uso direto do modelo por outras classes. Criando uma convenção de desenvolvimento onde o usuário não possa mais espalhar consultas ao banco de qualquer lugar. O principal objetivo é forçar a organização de consultas em um único local.

### BaseFactory

[](#basefactory)

A classe BaseFactory permite que você trabalhe com factories, sem precisar criar classes Factory para seus modelos. Basta usar a classe para conseguir semear suas tabelas sem precisar definir dados falsos manualmente. Ao invés de criar uma classe Factory para seu modelo e definir cada um dos muitos campos com dados fakes, basta usar o codigo a seguir no seu modelo:

```
use App\Models\User;

protected static function newFactory(): BaseFactory
{
    return new class extends BaseFactory {
        protected $model = User::class;
    };
}
```

E no seu seeder basta chamar a factory normalmente:

```
use App\Models\User;

User::factory()->create();
```

Sua tabela de usuários será populada corretamente com dados falsos.

Você é livre para customizar normalmente os campos como sempre fez:

```
use App\Models\User;

User::factory()->create([
    'name' => 'John Doe',
]);
```

Todos os outros campos serão gerados automaticamente.

### BaseDomain

[](#basedomain)

A classe BaseDomain tem o objetivo de guiar o fluxo da informação podendo usar ou não o repositório. A objetivo é guiar o fluxo da informação baseada no Modelo como sendo um Domínio onde a informação deve passar por um organizador da informação.

Ex: Precisa buscar algo no banco de dados, tratar, chamar processos e retornar os dados. Neste cenário, é comum que ao receber a requisição no Controller, usamos o Modelo para fazer a consulta ao banco, e ali mesmo no controller, tratamos os dados, chamamos algum serviço e passamos os dados tratados e depois retornamos uma resposta da requisição.

Embora este fluxo seja comum, este cenário desconsidera a necessidade de criar e manter um códgio manutenível, que seja fácil de manter e evoluir. Uma vez que os controladores acumulam consultas e chamadas a serviços externos, acabamos perdendo o controle de onde estão as regras de negócios da aplicação. Mas usando o Domínio, definimos que o mesmo é o responsável por definir e manter a ordem da informação.

Em um cenário mais organizado, a requisição chegaria no controlador, e o mesmo decide qual dominio chamar e este solicita ao seu modelo diretamente ou ao seu repositorio o que precisa e se tiver que usar o repositório, ele traz a informação, a mesma é tratada fora do reposiório e se precisar chamar algum cerviço de terceiro, ele chama e recebe o retorno, trata de devolve.

O controlador fica então responsável apenas em receber e devolver a resposta.

Todo este cenário é para manter um fluxo organizado sendo

- O Controller seria usado para receber e devolver a requisição, tratando a resposta como desejar.
- O Domínio seria usado para definir e manter a ordem da informação. Para garantir o fluxo organizado da regra de negócio.
- O Modelo seria usado para garantir espelhar os dados de sua tabela evitando consultas customizadas mas apenas relacionamentos.
- O Repositorio seria usado para evitar o uso direto do modelo, garantindo que todas as consultas customizadas ficariam dentro de classes de repositório. Garantindo a organização das consultas.
- A Factory seria usada para gerar dados falsos para suas tabelas, sem precisar criar classes Factory para seus modelos.
- O Seeder seria usado para melhorar o feedback dos seeders mostrando uma barra de progresso em grande volumes de dados.
- O HTTPService seria usado para chamar serviços externos com uma convenção definida.
- O BaseController seria usado para usar a convenção de dominios onde o controller assumiria um papel mais simples delegando responsabilidades de negocio para o Domínio. O BaseController usa a trait BaseResponse para tratar respostas complexas se necessário.
- o Livewire/BaseComponent entrega um componente dinâmico baseado no Livewire.

### Middlewares

[](#middlewares)

#### SpotLightMiddleware

[](#spotlightmiddleware)

O SpotLightMiddleware fornece uma maneira de executar comandos e até navegar em rotas do sistema usando uma interface e comandos de teclado.

### BaseForm

[](#baseform)

Usa o BaseComponente para entregar um formulário dinâmico baseado no Livewire.

### Rules

[](#rules)

- MinWords serve para validar o número mínimo de palavras de uma string.

### Services

[](#services)

#### DateFn

[](#datefn)

- Valida datas

#### Errors

[](#errors)

- Tratamento de erros avançados com códigos e mensagens de erros específicos

#### Notification

[](#notification)

- Padroniza a ação de notificações

#### Response

[](#response)

- O BaseResponse é geralmente utilizado por domínios para tratar respostas complexas, principalmente quando se trabalha com APIs.

### Tipos de usuários

[](#tipos-de-usuários)

A maioria das aplicações adminstrativas possuem um conjunto de usuários que podem ser classificados em grupos distintos.

Este módulo entrega tipos de usuários para podermos classificar usuários por tipo de função.

Telas

- Perfil
- Listagem
- Formulário

### Record

[](#record)

Record é uma entidade que representa a forma mais genéria de um item no banco. Sabendo que um item pode ter: id, data de criação, data de atualização, data de remoção etc, essa entidade possui essas características de forma genérica que todo modelo pode se beneficiar, sendo assim não seria necessário repetir estes campos em todos os modelos.

Se seu negócio segue esta lógica, você pode se beneficiar desta forma de atuação.

### Config

[](#config)

O objetivo desta entidade é agrupar as configurações do sistema. Por exemplo, o idioma do sistema, o tema do sistema, etc.

Telas

- Listagem
- Formulário

### Notifications

[](#notifications)

O objetivo desta entidade é ter notificações fora do padrão laravel, mas será descontinuada. Telas

- Listagem
- Visualização

###  Health Score

39

—

LowBetter than 86% of packages

Maintenance62

Regular maintenance activity

Popularity13

Limited adoption so far

Community7

Small or concentrated contributor base

Maturity63

Established project with proven stability

 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 ~16 days

Recently: every ~2 days

Total

77

Last Release

229d ago

Major Versions

v1.6.22 → v2.0.02025-08-02

### Community

Maintainers

![](https://www.gravatar.com/avatar/8d39677c258fbf37ae5170eae3a51c8728ee97b6f1b982c4c1ad59487d8a6004?d=identicon)[DaviMenezes](/maintainers/DaviMenezes)

---

Top Contributors

[![DaviMenezes](https://avatars.githubusercontent.com/u/3998868?v=4)](https://github.com/DaviMenezes "DaviMenezes (730 commits)")

### Embed Badge

![Health badge](/badges/dvidev-base-module/health.svg)

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

###  Alternatives

[laravel/telescope

An elegant debug assistant for the Laravel framework.

5.2k67.8M192](/packages/laravel-telescope)[spiral/roadrunner

RoadRunner: High-performance PHP application server and process manager written in Go and powered with plugins

8.4k12.2M84](/packages/spiral-roadrunner)[nolimits4web/swiper

Most modern mobile touch slider and framework with hardware accelerated transitions

41.8k177.2k1](/packages/nolimits4web-swiper)[laravel/dusk

Laravel Dusk provides simple end-to-end testing and browser automation.

1.9k36.7M259](/packages/laravel-dusk)[laravel/prompts

Add beautiful and user-friendly forms to your command-line applications.

708181.8M596](/packages/laravel-prompts)[cakephp/chronos

A simple API extension for DateTime.

1.4k47.7M121](/packages/cakephp-chronos)

PHPackages © 2026

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