/stars-in-tech

Projeto Final - Bootcamp Todas em Tech {Reprograma} - Turma On16 backend

Primary LanguageJavaScriptMIT LicenseMIT

Deploy on heroku Documentation on Swagger GitHub last commit

Sumário

Apresentação

A API Stars In Tech tem a proposta de reunir informações sobre mulheres criadoras de conteúdo sobre tecnologia. Em nosso banco de dados será possível cadastrar as plataformas utilizadas para disponibilização dos conteúdos, com o intuito de termos mais fontes de referencia para estudos e também para divulgar e incentivar o trabalho de outras mulheres.

Tecnologias, bibliotecas e dependências

Ferramenta Descrição
javascript Linguagem de programação.
node.js Ambiente de execução do javascript.
express Framework NodeJS.
mongoose Dependência que interage com o MongoDB para a conexão da database, criação do model e das collections.
nodemon Dependência que observa as atualizações realizadas nos documentos para rodar o servidor automaticamente.
npm ou yarn Gerenciador de pacotes.
MongoDb Banco de dados não relacional orietado a documentos.
Mongo Atlas Interface gráfica para verificar se os dados foram persistidos.
Postman Interface gráfica para realizar os testes.
jsonwebtoken Dependência que implementa o protocolo JSON Web Token.
bcrypt Bcryptjs é uma biblioteca para encriptação de dados. Neste caso, o dado a ser criptografado é o password.
dotenv Dependência para gerenciar facilmente variáveis de ambiente.
jest Jest é uma estrutura de teste JavaScript.
swagger Gera a documentação.
heroku Hospeda a aplicação.

Arquitetura MVC

 📁stars-in-tech
   |
   |--📁node_modules
   |
   |--📁 src
   |  ||
   |  ||
   |  ||--📁 controller
   |  |    |- 📄 authController.js
   |  |    |- 📄 starsController.js
   |  |    |- 📄 userController.js
   |  |
   |  ||--📁 database
   |  |    |- 📄 configDBScript.js
   |  |    |- 📄 mongooseConnect.js
   |  |
   |  ||--📁 models
   |  |    |- 📄 starsModels.js
   |  |    |- 📄 userModels.js
   |  |
   |  ||--📁 routes
   |  |    |- 📄 index.js
   |  |    |- 📄 starsRoutes.js
   |  |    |- 📄 starsRoutes.js
   |  |
   |  ||-📄 app.js
   |  |
   |  |--📁 swagger
   |  |   |- 📄 swagger_output.json
   |  |
   |  |--📁 test
   |  |   |- 📄 stars.test.js
   |  |   |- 📄 user.test.js
   |  |
   |  |
   |- 📄 .env
   |- 📄 .env.example
   |- 📄 .gitignore
   |- 📄 package-lock.json
   |- 📄 package.json
   |- 📄 Procfile
   |- 📄 README.md
   |- 📄 server.js
   |- 📄 swagger.js

Features e rotas

Esta API está sendo escutada na porta 8080 e para que todas as rotas possam ser acessadas localmente é necessário usar http://localhost:8080/ antes dos endpoints de requisição. Algumas dos endpoins necessitam de autenticação, login e permissão de usuária administradora.

A documentação também pode ser acessada pelo Swagger

Rotas de usuária

Feature Método Rota Status Auth Login
Lista todas as usuárias GET /users 200 ✔️ ✔️
Lista todas as usuárias por ID GET /users/:id 200 ✔️ ✔️
Cria usuária POST /users/create 201 ✔️ ✔️
Cria login de usuária POST /users/login 201 ✔️ ✔️
Atualiza dados da usuária PUT /users/update/:id 200 ✔️ ✔️
Atualiza o github da usuária pelo ID PATCH /users/modify/:id 200 ✔️ ✔️
Deleta usuária por ID DELETE /users/delete/:id 200 ✔️ ✔️

Rotas de Stars

Feature Método Rota Status Auth Login Adm
Lista todas as stars GET /stars 200 ✔️ ✔️ ✔️
Lista todas as stars por ID GET /stars/:id 200 ✔️ ✔️ ✔️
Cria uma star POST /stars/create 201 ✔️ ✔️ ✔️
Atualiza dados da star PUT /stars/update/:id 200 ✔️ ✔️ ✔️
Atualiza o username da star pelo ID PATCH /stars/modify/:id 200 ✔️ ✔️ ✔️
Deleta star por ID DELETE /stars/delete/:id 200 ✔️ ✔️ ✔️

PROTEÇÃO Para testar via Postman, passar token no header de autenticação $ Bearer Token

As rotas referentes as Stars necessitam de permissão de administrador. 

Por padrão, apenas a usuária referente a criadora da API possuí essa permissão, que é definida por um script que é executado no momento da inicialização do banco de dados. Esse script cria a usuária administrativa no banco de dados e define o seu perfil como isAdm : true .

Instalação

Clonar o repositório
$ git clone https://github.com/Maysafig/stars-in-tech

# Entrar na pasta do repositório
$ cd stars-in-tech

# Instalar as dependências
- npm init -y
- npm install 
- npm install express 
- npm install cors
- npm install nodemon
- npm install mongoose
- npm install dotenv-safe
- npm install jsonwebtoken
- npm install bcrypt

# Executar o servidor
$ npm start

Teste Jest

  • Instalar o Jest dentro da pasta stars-in-tech
  • Inicialize o comando de instalação npm install --save-exact jest@28.1.0 --save-dev para instalar o Jest.
  • Incluir o no package_json -> "test:watch": "jest --watchAll".
  • Inicialize com o comando npm run test:watch para testar.

Autora