Skip to content

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.

License

Notifications You must be signed in to change notification settings

akiraTatesawa/valex-ddd

Repository files navigation

💳 Valex API

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.

🗒️ Índice

🚧 Status

status-ongoing

🧰 Tecnologias

TypeScript NodeJS Express.js Prisma Postgres Jest

🧭 Referência da API

Em andamento..

⚙️ Rodando a aplicação

Rodando Localmente

Pré-requisitos: Node e Postgres.

  1. Clone o repositório:

    git clone https://github.com/akiraTatesawa/valex-ddd
  2. Navegue até o diretório do projeto:

    cd valex-ddd/
  3. Instale as dependências do projeto:

    npm i
  4. Crie um arquivo .env.development na raiz do projeto seguindo o modelo fornecido em .env.sample;

  5. Rode as migrações e a seed:

    npm run dev:migrate && npm run dev:seed
  6. Rode a aplicação:

    npm run dev

Rodando com Docker

Em andamento...

🧑‍💻 Motivação de Estudo

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

"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.

Referências SOLID

Test-Driven Development

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.

Referências TDD

Domain-Driven Design (DDD)

“É 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.

Referências DDD

Behavior-Driven Development (BDD)

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.

Referências BDD

Either Pattern

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.

Referências Either Pattern

About

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.

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published