Code Monkey home page Code Monkey logo

enecrescer's Introduction

EneCrescer 🖤✊🏿


Projeto Final {Reprograma} - EneCrescer

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


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

📁 Arquitetura do Projeto


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



👩🏾‍💻 Tecnologias e Dependências Utilizadas


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



👩🏾‍🔧 Instalação


# 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


⚗️ Interface Gráfica Para Realizar os Testes


📌 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



🔓 Preparando o Ambiente Para Autenticação


⚠️ Criar arquivo .env (adicionar no .gitignore) e usar o arquivo .env.example como modelo, colocando assim os seus dados.

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.


🔐 Testando Rotas de Login e Rotas Com ou Sem Proteção


📢 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



🧪 Teste Jest


📌 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!🚀



Muito obrigada a você que chegou até aqui! 💜

🙋🏾‍♀️ Autora


Foto de Perfil de Louise

Desenvolvido por

logo da reprograma

enecrescer's People

Contributors

louicosta avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.