Este é um projeto de exemplo utilizando Domain-Driven Design (DDD) com TypeScript. O projeto inclui entidades, repositórios, serviços e eventos para gerenciar clientes, produtos e pedidos.
- Clone o repositório:
git clone <URL_DO_REPOSITORIO>
- Navegue até o diretório do projeto:
cd ddd - Instale as dependências:
npm install
npm run test: Executa os testes utilizando Jest.npm run tsc: Compila o projeto TypeScript.
O Jest é configurado no arquivo jest.config.ts para transformar arquivos TypeScript utilizando @swc/jest.
As entidades representam os objetos principais do domínio, como clientes, produtos e pedidos. Elas são definidas na pasta src/domain.
Os repositórios são responsáveis por persistir e recuperar entidades do armazenamento. Eles são definidos na pasta src/infrastructure.
Os serviços contêm a lógica de negócios e operações que envolvem múltiplas entidades. Eles são definidos na pasta src/domain.
Os eventos são utilizados para notificar outras partes do sistema sobre mudanças de estado. Eles são definidos na pasta src/domain/@shared/event.
As fábricas são responsáveis por criar instâncias de entidades complexas. Elas são definidas na pasta src/domain.
import OrderFactory from "./src/domain/checkout/factory/order.factory";
const orderProps = {
customerId: "123",
items: [
{ name: "Item 1", productId: "p1", quantity: 1, price: 100 },
{ name: "Item 2", productId: "p2", quantity: 2, price: 200 },
],
};
const order = OrderFactory.create(orderProps);
console.log(order);Contribuições são bem-vindas! Sinta-se à vontade para abrir issues e pull requests.
Este projeto está licenciado sob a licença MIT. Veja o arquivo LICENSE para mais detalhes.