Essa aplicação é uma API Rest capaz de realizar a conversão entre duas moedas utilizando taxas de conversões atualizadas de um serviço externo (API Free), para consumir dessa API é necessário fazer um cadastro e gerar uma API_KEY.
Para realizar a conversão é necessário o ID do usuário que deseja realizar a conversão. Por isso, é preciso estar logado para poder realizar uma transação de conversão de moeda.
A API registra 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.
A aplicação segue os princípios do SOLID e foi desenvolvida no modelo de camadas MSC (Model-Service-Conntroller) em Node.js, utilizando Typescript, Express.js, banco de dados SQLite, ORM Sequelize, e Swagger para a documentação. Tem autenticação de usuário dom Json Web Token (JWT). Além disso, é possível rodar a aplicação pelo Docker.
Para os testes unitários e de integração, foi utilizado Mocha, Chai e Sinon.
Para deploy da aplicação, foi utilizado o Render.
- Clone o repositório
git@github.com:trkotovicz/exchange-api.git
. - Na raíz do repositório, abra o terminal e rode o comando
npm run compose:up
e aguarde a alicação subir (esse passo pode demorar um pouco). - Para encerrar a aplicação, rode o comando
npm run compose:down
.
- Clone o repositório
git@github.com:trkotovicz/exchange-api.git
. - Na raíz do repositório instale as dependências e inicialize o projeto com o comando
npm start
. - Abra o navegador no endereço
http://localhost:3001/docs/#/
para testar a API.
Para testar a aplicação, depois de ter instalado as dependências, basta abrir o terminal na raíz do repositório e rodar o comando npm test
ou npm run test
.
Com a aplicação rodando acesse a documentação da API.
- Crie o arquivo
.env
na pasta raíz e informe a suaAPI_KEY
. - Para utilizar a aplicação, e necessário criar um novo usuário. Para isso, acesse a rota
/user
e informeusername
epassword
. - Acesse a rota
/login
e informe os dados de usuário criados anteriormente. - Para acessar as rotas de conversão
/exchange
, é necessário informar no headers da sua requisição o token gerado no login. - Para acessar todas as transações feitas pelo usuário, acesse a rota
/exchange/user
informando o token.
*Nota: A sua primeira requisição de conversão pode demorar um pouquinho para retornar, pois ele busca as taxas de todas as moedas disponíveis na API externa.
- Corrigir o erro de deploy no Render (está retornando um erro de token inválido ao tentar acessar a aplicação).
- Adicionar um fluxo de entrega contínua (CI/CD).
- Melhorar os testes unitários e de integração da aplicação.
- 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
Projeto desenvolvido por Thais R Kotovicz.