Sumario
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.
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.
- Clean Code
- Clean Architeture
- DDD
- TDD
- KISS
- YAGNI
Este Projeto foi desenvolvido usando as seguintes tecnologias:
Para instalar a aplicação você precisará executar os passos informados abaixo.
# 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
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
# Veja o coverage da aplicacao
$ yarn test:cov
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
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 💜 🚀!