/payment-orders-api

Desafio pratico - Transferencias de Pagamento

Primary LanguageTypeScript

Docker     Node     ts     Terminal Mongo    

Sumario
  1. Desafio do projeto
  2. Arquitetura
  3. Como instalar
  4. Testes
  5. OpenAPI
  6. Dúvidas e questionamentos

🚀 desafio

A proposta é fazer um serviço de transferência que será utilizado por outros serviços dentro de uma mesma empresa. O seu serviço deve receber requisição para efetuar uma Transferência de um determinado valor (considerar 2 casas decimais), enviar os dados necessários para a plataforma de Liquidação do banco e retornar uma resposta para o serviço do cliente. O serviço de Transferência deve receber uma informação opcional de “data de vencimento” que deve ser avaliado para que você não envie transferências vencidas. Além disso todas as operações devem ser salvas no BD.

📌 Funcionalidades

Uma descrição resumida das duas principais funcionalidades presentes na aplicação.

  • Criação de transferência

    • Funcionalidade responsável por criar ou agendar uma transferência.
  • Consulta de transferência

    • Funcionalidade responsável retornar as informações consultas pelo cliente através de um ID.
  • Processamento de transferências agendadas (Schedule)

    • Funcionalidade auxiliar que tem como objetivo processar todas as tranferências sejam elas agendadas ou não, definindo seu status para aprovada (APPROVED) ou rejeitada (REJECTED), conforme a solicitação do desafio.

📐 Arquitetura

arch

📖 Padrões

  • Clean Code
  • Clean Architeture
  • DDD
  • TDD
  • KISS
  • YAGNI

🔨 Tecnologias

Este Projeto foi desenvolvido usando as seguintes tecnologias:

💻 Como usar

Para instalar a aplicação você precisará executar os passos informados abaixo.

Instalação básica

# Clone o repositório
$ git clone https://github.com/dariobennaia/payment-orders-api.git

# Entre na pasta do projeto
$ cd payment-orders-api

# Instale as dependências
$ yarn install

# Crie o arquivo .env com base no modelo .env.example e preencha suas informações corretamente.
$ cp .env.example .env

# Execute a aplicação
$ yarn dev

🚨 Importante! A execução do schedule é importante para que as transferencias sejam processadas.

$ yarn schedule

Instalação usando o nosso ❤️ amorzinho, o docker.

🚨 Importante! Certifique-se de que você possui o docker instalado em sua maquina. A versão usada no desenvolvimento deste projeto foi: Docker e o Docker Compose. Para mais informações consulte a documentação oficial.

# Clone o repositório
$ git clone https://github.com/dariobennaia/payment-orders-api.git

# Entre na pasta do projeto
$ cd payment-orders-api

# Crie o arquivo .env com base no modelo .env.example e preencha suas informações corretamente.
$ cp .env.example .env

# Execute o gerenciador do docker para subir a aplicação
$ docker-compose up

Se precisar buildar as informações novamente basta executar:

# Execute o gerenciador do docker para subir a aplicação
$ docker-compose up --build

✨ Testes

Para executar os testes da aplicação, execute o comando abaixo.

🚨 Importante! Certifique-se de ter executado a etapa de instalação e de que o banco de dados esteja em execução, os testes dependem dessa conexão.

# Execute os testes unitário
$ yarn test

tests

# Veja o coverage da aplicacao
$ yarn test:cov

tests-cov

📋 OpenAPI

Para visualizar o swagger da aplicação, execute o comando abaixo.

$ yarn dev

Após o server ter iniciado, em seu navegador execute: http://localhost:3000/api-docs

openapi

❓ Perguntas

Acredito que você possa esta se fazendo algumas perguntas, bom, deixa eu ver se eu consigo te responder.

  • Por que usar um SCHEDULE para fazer o processamento das transferências?
    • O prazo para a entrega do desafio impactou no desenvolvimento de uma solução mais elaborada, fazendo com que outras alternativas fossem buscadas.

Feito com carinho por Dário Santos 💜 🚀!