Loading repository data…
Loading repository data…
brenndha-cabral / repository
Neste projeto foi desenvolvida uma API que se conecta a um banco de dados para gerenciar uma carteira de investimentos
:round_pushpin: Sobre :round_pushpin: Demo :round_pushpin: Tecnologias :round_pushpin: Usabilidade :round_pushpin: Documentação :round_pushpin: Orientações :round_pushpin: Scripts :round_pushpin: Testes :round_pushpin: DER :round_pushpin: Arquitetura :round_pushpin: Decisões :round_pushpin: Referências
Esta aplicação tem como objetivo gerenciar investimentos em ações, com algumas funcionalidades de conta digital :bulb:
Node.js com Express usando o pacote Sequelize para fazer um CRUD de investimentos.postgreSQL através do supabase.:information_source: Acesse a documentação aqui e simule a usabilidade :rocket:
Veja a seção de documentação para entender melhor como funcionam as rotas.
Veja a seção de orientações antes de rodar a aplicação.
:round_pushpin: Acessando o deploy pelo Swagger:
:round_pushpin: Acessando o local pelo Swagger:
Faça um clone deste repositório:
git@github.com:brenndha-cabral/invest-api.gitApós rodar a aplicação localmente ou pelo docker, você deverá acessar através de:
http://localhost:3000/{rota}/docsCaso prefira outro cliente, aqui estão algumas sugestões:
:bulb: HTTPie | :bulb: Postman | :bulb: Insomnia | :bulb: Thunder Client
:information_source: Acesse aqui a documentação deste projeto onde constam mais detalhes sobre a estrutura da API.
Caso não tenha conhecimento em Swagger, clique aqui e veja como é fácil utilizar.
Para que a as rotas sejam consumidas, é necessário que a pessoa usuária faça login.
Para fazer login, clique em Try it out e com as credenciais padrões e em seguida clique em execute, a aplicação retornará um token.
Após o login, o token retornado deve ser inserido em Authorize e isso fará com que haja a autenticação e autorização para todas as rotas.
Após isso, o token já será validado em todas as rotas. Siga os exemplos e clique em execute para retornar as respostas.
Exceto a rota POST /clientes que não necessita de login, neste caso após o cadastro, será retornado um token para então a utilização da API.
:information_source: Você encontrará um arquivo
example.envonde estarão as variáveis de ambiente utilizadas no projeto, duplique-o e renomeie-o apenas para.enve insira os valores nas variáveis de ambiente conforme sua utilização.
:information_source: Rode os serviços
nodeedbcom o comandodocker-compose up.
Esse comando irá inicializar os containers chamados invest_api e invest_api_db;
A partir daqui você pode acessar o container invest_api via CLI ou abri-lo no seu editor;
:information_source: Use o comando
docker exec -it invest_api sh.
:information_source: Ao rodar o docker-compose, ele automaticamente irá rodar os seguintes scripts:
npm install: Irá instalar todas as dependências;
npm run prestart: Irá rodar os comandos para gerar as migrations e seeders no invest_api_db;
npm run dev: Irá rodar a aplicação na porta 3000 pelo nodemon, ou adapte o docker-compose e o .env caso sinta necessidade.
:information_source: É necessário que você tenha
npm,nodeepostgresinstalados em sua máquina.
:information_source: Instale as dependências com
npm install.
:information_source: Rode a aplicação com
npm run devna porta3000pelonodemon, ou adapte o.envcaso sinta necessidade.
:information_source: Lembrando que o
docker-compose upjá irá rodar onpm run prestartenpm run dev.
npm run test: Irá rodar todos os testes unitários e de integração da aplicação;
npm run test:mocha: Irá rodar todos os testes unitários e de integração da aplicação e apresentará um relatório de cobertura;
npm run prestart: Irá rodar os comandos para gerar as migrations e seeders;
npm run start: Irá rodar a aplicação (automaticamente irá rodar o npm run prestart);
npm run dev: Irá rodar a aplicação através do nodemon, como desenvolvimento;
npm run lint: Irá apontar todas as inconcistências de lint;
npm run lint-fix: Irá corrigir o máximo de inconcistências de lint automaticamente.
Sinta-se à vontade para ajustar os scripts de acordo com a sua necessidade.
Foram realizados testes de integração com
MochaeChai.
Existem cenários de testes comentados por necessitar que os dados do banco estivessem mais específicos.
O ideial seria criar um banco de dados específicos para os testes, contudo neste projeto os testes utilizam o mesmo banco de dados de desenvolvimento.
Um dos grandes desafios desse projeto certamente foram os testes, para validar os testes unitários eu demandaria muito mais tempo visto que não consegui absorver o conteúdo de forma adequada. Então, para haver testagem, escolhi fazer testes de integração pela cobertuda e assertividade.
Este projeto foi elaborado nos padrões da arquitetura MSC onde existem três camadas:
Camada de Modelo (M): Arquivos que executam as operações do banco de dados, como criar conexões e executar queries;
Camada de Serviço (S): Arquivos que estruturam as regras de negócio, geralmente é quem chama os métodos definidos na camada de modelo;
Camada de Controladores (C): Interface mais próxima da pessoa usuária ou de uma requisição, irá processar e chamar as devidas funções da camada de serviço.