O presente projeto foi desenvolvido durante a participação do processo seletivo da XP.inc e teve como principal objetivo a construção de uma api semelhante ao dia dia na referenciada, uma aplicação de investimento em ações, com algumas funcionalidades de conta digital;
Desenvolvimento
Este projeto, foi desenvolvido tentando se apróximar ao máximo possível do funcionamento de uma api de investimentos, durante o processo foram utilizadas as seguintes tecnologias: NODE.js, sequelizeORM, JavaScript, Express e o banco estruturado com postgresSql hospedado pelo supabase.
O projeto foi executado seguindo o padrão de arquitetura MSC, tentando aplicar os conceitos de REST, as validações foram realizadas com JOI e os testes foram executados com as bibliotecas Mocha e Chai, com o auxílio também da sequelize-test-helpers.
Período de entrega
- Este projeto foi individual
- Foram
9
dias de projeto - Do dia
15/07/2022 09:00
ao dia:24/07/2022 23:59
Rodando no Docker vs Localmente
No terminal clone o repositório:
git clone git@github.com:alvaro-tomich/API-investimentos.git
.
- Ao clonar o repositório entre nele utilizando o seguinte comando:
cd API-investimentos
. - Abra o vscode utilizando o seguinte comando:
code .
.
Renomeie o arquivo .envexample para .env e configure as variáveis de ambiente.
- exemplo: PORT:3000, PASSWORD_POSTGRES:password;
No terminal do VSCode Rode o comando
docker-compose up -d
.
- Esse serviço irá inicializar um container chamado
api-investimentos
. - Esse serviço irá inicializar um container do banco de dados.
- A partir daqui você pode rodar o container
api-investimentos
via CLI. - Ao rodar o docker-compose vocẽ já consegue acessar o workbench mysql pela conexão via docker utilizando as variáveis de ambiente.
- Ex: crie uma nova conexão no mysql workbench utilizando o password escolhido no .env, o host e a porta 3306;
- Caso a conexão não funcione execute os dois próximos passos e volte nesse.
Use o comando:
docker exec -it api-investimentos bash
.
- Ele te dará acesso ao terminal interativo do container criado pelo compose, que está rodando em segundo plano.
Instale as dependências com
npm install
Rode o comando
npx sequelize db:create && npx sequelize db:migrate && npx sequelize db:seed:all
- Esse comando irá criar e popular o banco de dados;
- O seed de dados já possui 2 usuários por padrão;
Rode o comando
npm run dev
- Esse comando deixará a aplicação pronta para ser realizaro requisições.
No terminal clone o repositório:
git clone git@github.com:alvaro-tomich/API-investimentos.git
.
- Ao clonar o repositório entre nele utilizando o seguinte comando:
cd API-investimentos
. - Abra o vscode utilizando o seguinte comando:
code .
.
Renomeie o arquivo .envexample para .env e configure as variáveis de ambiente.
- exemplo: PORT:3000, PASSWORD_POSTGRES:password;
No terminal do VSCode rode o comando
npm install
Crie uma nova conexão com o mysql workbench baseada nas suas variáveis de ambiente.
Rode o comando
npm run dev
- Esse comando deixará a aplicação pronta para ser realizado requisições.
✨ Dica: Para rodar o projeto desta forma, obrigatoriamente você deve ter o node
instalado em seu computador.
✨ Dica: Recomenda-se a versão 16 ou superior do node
, versão em que a aplicação foi desenvolvida.
Testes
Foram utilizadas as bibliotecas Mocha, chai e sinon para desenvolvimento dos testes unitários.
Para executar os testes localmente, digite no terminal o comando npm test
.
Deploy da API
O deploy da aplicação foi realizado utilizando o heroku`.
- Voce pode utilizá-lo com o seguinte endereço:
https://api-investimentos.herokuapp.com/
. - A partir desse endereço você pode utilizá-lo no postman ou onde preferir realizar as requisições.
A Aplicação também está disponível no swagger onde há descrição de todos os endpoints`.
- Acesse a partir do seguinte endereço:
https://api-investimentos.herokuapp.com/docs
. - Lembre-se de alterar o servidor de local para o servidor do heroku.
Mande seu feedback sobre o projeto!
Gostaria primeiramente de agradacer a XP.inc pela oportunidade! Caso tenha feedbacks sobre o projeto entre em contato com o seguinte email: alvaroramos222@hotmail.com
, estou sempre buscando melhorias então irei adorar ler e discutir sobre.