Este é projeto final da iniciativa TeT(Todas em Tech) do curso de Desenvolvedora Backend | Turma On16 da {Reprograma}.
Este projeto é uma API com CRUD completo que contém um banco de dados, Autenticação e Login
- 👧🏾 Objetivo
- 📁 Arquitetura do Projeto
- 👩🏾💻 Tecnologias e Dependências Utilizadas
- 👩🏾🔧 Instalação
- ⚗️ Interface Gráfica Para Realizar os Testes
- 🔓 Preparando o Ambiente Para Autenticação
- 🔐 Testando Rotas de Login e Rotas Com ou Sem Proteção
- 🧪 Teste Jest
- 🙋🏾♀️ Autora
O objetivo desta API é criar um local para consulta com livros, filmes, séries e desenhos infanto-juvenis em que o protagonista ou co-protagonista sejam pessoas pretas ou pardas. Não somente consulta, mas que seja futuramente um espaço para divulgação de novos conteúdos voltados a pessoas pretas e pardas como parte importante da construção de identidade de crianças e jovens que não sabem ou não veem divulgação de pessoas como elas.
Pra frente pretendo adicionar ao banco de dados livros, filmes séries e desenhos que possuam algum personagem protagonista ou co-protagonista que sejam da comunidade LGBTQIA+ para que cada dia mais crianças e adolescentes se sintam represetados de forma respeitosa.
Apresentação do Projeto Final
Lembre-se que a arquitetura ao final do projeto precisa ficar exatamente dessa maneira.
📁ENECRESCER
|
|--📁node_modules
|
|--📁 src
| ||
| ||
| ||--📁 controllers
| | |- 📄 bookController.js
| | |- 📄 cartoonController.js
| | |- 📄 catalogController.js
| | |- 📄 movieController.js
| | |- 📄 seriesController.js
| | |- 📄 usersController.js
| |
| ||--📁 database
| | |- 📄 mongooseConnect.js
| |
| ||--📁 models
| | |- 📄 bookModel.js
| | |- 📄 cartoonModel.js
| | |- 📄 movieModel.js
| | |- 📄 seriesModel.js
| | |- 📄 userModels.js
| |
| ||--📁 routes
| | |- 📄 bookRoutes.js
| | |- 📄 cartoonRoutes.js
| | |- 📄 catalogRoutes.js
| | |- 📄 index.js
| | |- 📄 movieRoutes.js
| | |- 📄 seriesRoutes.js
| | |- 📄 userRoutes.js
| |
| ||-📄 app.js
| |
| |--📁 swagger
| | |- 📄 swagger_output.json
| |
| |--📁 test
| | |- 📄 book.test.js
| | |- 📄 cartoon.test.js
| | |- 📄 movie.test.js
| | |- 📄 serie.test.js
| | |- 📄 user.test.js
| |
| |
|- 📄 .env
|- 📄 .env.example
|- 📄 .gitignore
|- 📄 package-lock.json
|- 📄 package.json
|- 📄 Procfile
|- 📄 README.md
|- 📄 server.js
|- 📄 swagger.js
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, não é obrigatório para JWT, mas uma boa prática para configurações em geral. |
jest |
Jest é uma estrutura de teste JavaScript. |
swagger |
Gera a documentação. |
heroku |
hospeda a documentação. |
Link para a documentação:
📝 Swagger
📝 Heroku
# Clonar o repositório
$ git clone https://github.com/louicosta/EneCrescer
# Entrar na pasta do repositório
$ cd EneCrescer
# Instalar as dependências
$ npm install
# Executar o servidor para que você possa rodar o projeto localmente
$ npm start
📌 Este projeto está com os métodos HTTP organizados. Você pode testar as rotas Get, Post,Delete e Patch através de qualquer ferramenta cliente API REST, como Insomnia, Thunder Client, Postman, entre outros. Nesse projeto, utilizamos o Postman. A interface é um CRUD.
▫️ Rota de criação de usuário
▫️ Rota que retorna todos os livros do catálogo
▫️ Rota que retorna a série por título
▫️ Rota que altera alguma propriedade do desenho
Seguir a ordem de instalações no terminal:
- Inicialize o comando de instalação
npm i express cors
para instalar o cors. - Inicialize o comando de instalação
npm i --save-dev dotenv
para instalar dontenv. - Inicialize com o comando
npm start
para que você possa executar os testes.
📢 Todas as rotas existentes neste projeto:
- Usuários
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
POST | /registration | Adicionar um novo usuário | 201 | ✔️ |
GET | /search | Listar todos os usuários | 200 | ❌ |
DELETE | /delete/:id | Remove um usuário | 200 | ✔️ |
POST | /login | Devolve o token de um usuário | 200 | ✔️ |
- Catálogo completo
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
GET | /catalog | Lista todo o cátálogo do banco de dados, menos o de usuários | 201 | ✔️ |
- Livros
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
GET | /books | Listar todos os filmes cadastrados | 200 | ❌ |
GET | /book/title | Mostra o cadastro do livro por título | 200 | ❌ |
GET | /book/:id | Mostra o cadastro do livro por ID | 200 | ❌ |
POST | /books/registration | Registra um novo livro | 201 | ✔️ |
PATCH | /book/update/:id | Altera alguma informação sobre o livro | 201 | ✔️ |
DELETE | /book/delete/:id | Remove o cadastro de um livro | 200 | ✔️ |
- Desenhos
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
GET | /cartoons | Listar todos os desenhos cadastrados | 200 | ❌ |
GET | /cartoon/title | Mostra o cadastro do desenho por título | 200 | ❌ |
GET | /cartoons/age | Listar todos os desenhos por classificação etária | 200 | ❌ |
GET | /cartoon/:id | Mostra o cadastro do desenho por ID | 200 | ❌ |
POST | /cartoons/registration | Registra um novo desenho | 201 | ✔️ |
PATCH | /cartoon/update/:id | Altera alguma informação sobre o desenho | 201 | ✔️ |
DELETE | /cartoon/delete/:id | Remove o cadastro de um desenho | 200 | ✔️ |
- Filmes
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
GET | /movies | Listar todos os filmes cadastrados | 200 | ❌ |
GET | /movie/title | Mostra o cadastro do filme por título | 200 | ❌ |
GET | /movie/age | Listar todos os filmes por classificação etária | 200 | ❌ |
GET | /movie/:id | Mostra o cadastro do filme por ID | 200 | ❌ |
POST | /movies/registration | Registra um novo filme | 201 | ✔️ |
PATCH | /movie/update/:id | Altera alguma informação sobre o filme | 201 | ✔️ |
DELETE | /movie/delete/:id | Remove o cadastro de um filme | 200 | ✔️ |
- Séries
Verbo | EndPoint | Descrição da Rota | Status | Auth |
---|---|---|---|---|
GET | /series | Listar todas as séries cadastradas | 200 | ❌ |
GET | /serie/title | Mostra o cadastro da série por título | 200 | ❌ |
GET | /serie/age | Listar todas as séries por classificação etária | 200 | ❌ |
GET | /serie/:id | Mostra o cadastro da série por ID | 200 | ❌ |
POST | /series/create | Registra uma nova série | 201 | ✔️ |
PATCH | /series/update/:id | Altera alguma informação sobre a série | 201 | ✔️ |
DELETE | /serie/delete/:id | Remove o cadastro de uma série | 200 | ✔️ |
PROTEÇÃO Para testar via Postman, passar bearer token no header de autenticação $ Bearer Token
📌 Instalar o Jest dentro da pasta EneCrescer
- Inicialize o comando de instalação
npm install --save-exact [email protected] --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.
Projeto criado com a orientação e cuidado da Professora Mayhhara F Lilian!
Agradecimento ao meu esposo, minha família, a Jani, nossa facilitadora maravilhosa, a Ju, que nos acolheu em meio aos caos e as incertezas, todas minhas colegas da On16, principalmete àquelas que me acolheram nas minhas inquietações e às pessoas que fizeram parte dessa construção e conhecimento em algum momento!🚀