Voc� dever� implementar uma API Rest que seja capaz de realizar a convers�o entre duas moedas utilizando taxas de convers�es atualizadas de um servi�o externo.
Para realiza��o da convers�o � necess�rio o ID do usu�rio que deseja realizar a convers�o.
A API dever� registrar cada transa��o de convers�o com todas as informa��es relacionadas e tamb�m disponibilizar um endpoint para consulta das transa��es realizadas por um usu�rio.
O projeto dever� ser feito em Node.js com TypeScript.
- Deve ser poss�vel realizar a convers�o entre 4 moedas no m�nimo (BRL, USD, EUR, JPY);
- As taxas de convers�o devem ser obtidas de [https://api.exchangeratesapi.io/latest?base=EUR] (Usar a API Free - Tem limita��o de requisi��es, e apenas convers�o com base na moeda EUR);
- As transa��es de convers�o devem ser persistidas no banco de dados (embedded) contendo:
- ID do usu�rio;
- Moeda origem;
- Valor origem;
- Moeda destino;
- Taxa de convers�o utilizada;
- Data/Hora UTC;
- Uma transa��o com sucesso deve retornar:
- ID da transa��o
- ID do usu�rio;
- Moeda origem;
- Valor origem;
- Moeda destino;
- Valor destino;
- Taxa de convers�o utilizada;
- Data/Hora UTC;
- Os casos de falha devem retornar com status code pertinente e descri��o no corpo;
- Dever� existir um endpoint para listagem de todas as transa��es realizadas por usu�rio;
- Deve haver uma cobertura satisfat�ria de testes;
- Deve-se adicionar a esse arquivo explica��es sobre como rodar a aplica��o, e uma apresenta��o sobre o projeto: prop�sito, features, motiva��o das principais escolhas de tecnologias, e separa��o das camadas;
- Todo o c�digo deve ser em ingl�s;
- Disponibilizar o c�digo apenas nesse reposit�rio, sem nenhuma c�pia p�blica, para evitar pl�gio;
- Logs
- Tratamento de exce��es
- Documenta��o
- Coes�o de commits
- Mensagens de commits claras
- Configura��o de lint
- Testes unit�rios
- Testes de integra��o
- Documenta��o dos endpoints
- Estar rodando e dispon�vel (Ex: Heroku, ou similar)
- CI/CD
Essa aplicação foi desenvolvida usando Node.js 18.13.0 (LTS). Com essa versão instalada, rode os seguintes comandos:
npm install
npm run test
para executar os testesnpm run start
para iniciar o server local
O projeto é parte do processo seletivo, a tecnologia foi definida baseado nas necessidades do cliente, creio eu. A separação foi feita em 3 camadas, de dominio (regras de negocio independentes), aplicação (orquestração de operações para o usuário) e infraestrutura (interação com componentes externos à aplicação)