Valex é uma API de gerenciamento de cartões de benefícios (Voucher Cards).
A API é responsável pela criação, ativação e recarga de cartões, assim como o processamento das compras realizadas utilizando o cartão de benefício.
- 💳 Valex API
Em andamento..
Pré-requisitos: Node e Postgres.
-
Clone o repositório:
git clone https://github.com/akiraTatesawa/valex-ddd
-
Navegue até o diretório do projeto:
cd valex-ddd/
-
Instale as dependências do projeto:
npm i
-
Crie um arquivo
.env.development
na raiz do projeto seguindo o modelo fornecido em.env.sample
; -
Rode as migrações e a seed:
npm run dev:migrate && npm run dev:seed
-
Rode a aplicação:
npm run dev
Em andamento...
A proposta original do projeto foi elaborada pela Driven Education como parte do curso intensivo de Desenvolvimento Web Full Stack.
Entretanto, esse projeto é uma refatoração do projeto original, a fim de colocar em prática alguns conceitos dos quais eu me interesso e estou estudando atualmente.
"SOLID é um acrônimo para cinco princípios de padrões de projeto em OOP criado por Robert C. Martin, que tem o intuito de facilitar o desenvolvimento e manutenção de software."
Os cinco princípios são:
- Single Responsibility Principle — Princípio de responsabilidade única.
- Open/Closed Principle — Princípio de Aberto/Fechado.
- Liskov Substitution Principle — Princípio da Substituição de Liskov.
- Interface Segregation Principle — Princípio da Segregação de Interface.
- Dependency Inversion Principle — Princípio da Inversão de Dependência.
- Princípios SOLID com Typescript, por Gabriel Silvestre;
- Introdução a Orientação a Objeto, por Matheus Bessa;
- Seu próximo back-end Node com TESTES! + SOLID, pela Rocketseat;
- Construindo APIs Node.js escaláveis com SOLID + TDD, pela Rocketseat;
O TDD é uma metodologia que visa aumentar a qualidade do software através do uso intensivo de testes durante o desenvolvimento.
Ciclo de desenvolvimento: Red, Green and Refactor. Ou seja:
- Escrevemos um Teste que inicialmente não passa (Red);
- Adicionamos uma nova funcionalidade do sistema;
- Fazemos o Teste passar (Green);
- Refatoramos o código da nova funcionalidade (Refactoring);
- Escrevemos o próximo Teste.
- Test Driven Development: TDD Simples e Prático, pela DevMedia;
- ENTENDENDO E APLICANDO O TEST DRIVEN DEVELOPMENT, pela OneDayTesting;
- TDD na prática, por Diego da Rocketseat e Rodrigo Manguinho;
- Série: Teste de Software, playlist de aulas por Otavio Lemos;
- NodeJs, TDD e Clean Architecture, playlist de aulas por Rodrigo Manguinho;
- Introduction to Test-Driven Development (TDD) with Classic TDD Example, por Khalil Stemmler;
“É um conjunto de princípios com foco em domínio, exploração de modelos de formas criativas e definir e falar a linguagem Ubíqua, baseado no contexto delimitado.”
O Domain Driven Design combina práticas de design e desenvolvimento. Oferece ferramentas de modelagem estratégica e tática para entregar um software de alta qualidade. O objetivo é acelerar o desenvolvimento de software que lidam com complexos processos de negócio.
- Domain-Driven Design - Conceitos básicos, por Bruno Brito;
- O que é DDD – Domain Driven Design, pela FullCycle;
- Arquitetura de Software, playlist de aulas por Otavio Lemos;
- An Introduction to Domain-Driven Design (DDD), por Khalil Stemmler;
- Value Objects - DDD w/ TypeScript, por Khalil Stemmler;
- Understanding Domain Entities [with Examples] - DDD w/ TypeScript, por Khalil Stemmler;
- Implementing DTOs, Mappers & the Repository Pattern using the Sequelize ORM [with Examples] - DDD w/ TypeScript, por Khalil Stemmler;
BDD é técnica de desenvolvimento ágil que visa integrar regras de negócios com linguagem de programação, focando o comportamento do software. Além disso, pode-se dizer também, que BDD é a evolução do TDD. Isto porque, os testes ainda orientam o desenvolvimento, ou seja, primeiro se escreve o teste e depois o código.
A ideia é descrever o comportamento esperado desta funcionalidade (através de Gherkin) e não tentar dizer como ela deve ser implementada.
- Saiba qual é a diferença entre TDD e BDD, pelo blog LocalWeb;
- Desenvolvimento orientado por comportamento (BDD), pela DevMedia;
- 175 - TDD != BDD? COMO É?, por Otavio Lemos;
- #1 Clean Architecture & Typescript - BDD Specs + Use Cases, por Rodrigo Manguinho;
- escrevendo features, por behat;
O "Either Pattern" é uma abordagem de tratamento de erros sem lançar exceções de código (throw).
No caso da aplicação, utilizou-se as classes Right, para representação de uma operação bem sucedida, e a classe Left, que representa um erro.
Além disso, para armazenamento do resultado das operações na aplicação, utilizou-se a classe Result.
- The Either data type as an alternative to throwing exceptions, por ThoughtWorks;
- Flexible Error Handling w/ the Result Class, por Khalil Stemmler;
- Functional Error Handling with Express.js and DDD, por Khalil Stemmler;
- Clean Architecture + DDD: Erros por camada e uso do Either, por Otavio Lemos;
- Lidando com erros utilizando padrão EITHER em aplicação NodeJS, por Daniele Leão;
- Tratamento Flexível de Erros em TypeScript + Node.js | Princípio da Menor Surpresa, por Otavio Lemos;