hugo0vaz/ddd-tooling

Geradores de boilerplate DDD (Aggregate, Value Object, Domain Event, Repository, Integration Events) para Laravel.

Maintainers

Package info

github.com/Hugo0Vaz/ddd-tooling

pkg:composer/hugo0vaz/ddd-tooling

Transparency log

Statistics

Installs: 5

Dependents: 0

Suggesters: 0

Stars: 0

Open Issues: 0

v1.0.2 2026-08-18 13:33 UTC

This package is auto-updated.

Last update: 2026-08-18 13:35:07 UTC


README

Geradores de boilerplate DDD (Domain-Driven Design) para Laravel — Aggregate Roots, Value Objects, Domain Events, Repositories e Integration Events.

Projeto para acelerar a criação de bounded contexts seguindo uma arquitetura DDD pragmática: contexto na raiz, quatro camadas (Domain, Application, Infrastructure, Http) e SharedKernel compartilhado.

Instalação

composer require hugo0vaz/ddd-tooling

O ServiceProvider é auto-descoberto pelo Laravel (via extra.laravel.providers).

Configuração

Publish da config (opcional — os defaults funcionam para apps com namespace App\):

php artisan vendor:publish --tag=ddd-tooling-config

Chaves de config/ddd-tooling.php:

Chave Default Descrição
kernel_namespace App\SharedKernel Namespace do SharedKernel da app (referenciado pelos stubs gerados)
kernel_path app_path('SharedKernel') Path físico do SharedKernel
schemas_path base_path('contracts/schemas') Diretório dos schemas JSON de contrato
contracts_namespace {kernel_namespace}\Infrastructure\Contracts Namespace do subsystem de contratos
contracts_path {kernel_path}/Infrastructure/Contracts Path físico do subsystem de contratos

Comandos de geração

Comando Descrição
ddd:context <context> Cria o scaffolding de camadas de um bounded context
ddd:aggregate <context> <name> Aggregate Root + Value Object de identidade
ddd:value-object <name> Value Object (no contexto, agregado ou SharedKernel)
ddd:domain-event <context> <aggregate> <event> Domain Event (+ listener opcional)
ddd:repository <context> <aggregate> Interface de repositório (+ implementação Eloquent opcional)
ddd:integration-event <context> <type> Schema JSON + IntegrationMapper (produtor) ou Subscriber (consumidor)
ddd:integration-dto <context> <type> DTO tipado a partir de um schema de contrato

Todos os comandos suportam --force para sobrescrever arquivos existentes.

Subsystem de contratos

O pacote inclui um subsystem coeso de validação de contratos (SchemaRepository, SchemaValidator, ContractCompatibility, CheckContractsCommand). Para publicá-lo na sua aplicação:

php artisan ddd:publish-contracts

Isso cria:

  • contracts/README.md
  • contracts/schemas/.gitkeep
  • Quatro classes de contrato no diretório configurado (contracts_path):
Classe Descrição
SchemaRepository Carrega schemas JSON de contracts/schemas/
SchemaValidator Valida payloads contra um schema
ContractCompatibility Detecta mudanças quebra-contrato entre versões
CheckContractsCommand Comando contracts:check para CI

As classes são publicadas com o namespace configurado (contracts_namespace) e o comando contracts:check é registrado automaticamente.

Override de stubs

Para customizar os stubs de geração:

php artisan vendor:publish --tag=ddd-tooling-stubs

Os stubs são copiados para stubs/ddd-tooling/. A cópia publicada sobrepõe a do pacote.

Testes

composer test