/corona-quiz-backend

Project developed to subject semester work of Programming in Micro Informatics at FATEC. ❓

Primary LanguageJavaScript

BACK-END - Corona Quiz

📚 Análise e Desenvolvimento de Sistemas 📚

🏨 Faculdade de Tecnologia de São José dos Campos - Prof. Jessen Vidal. 🏨

GitHub top language Repository size GitHub last commit Repository issues GitHub

Introdução   |    Tecnologias   |    Arquitetura da API

Execute no Insomnia

📖 INTRODUÇÃO

Este repositório é do back-end do trabalho semestral da matéria de Programação em Microinformatica do 1º semestre de Análise e Desenvolvimento de Sistemas da Faculdade de Tecnologia de São José dos Campos - Prof. Jessen Vidal, cuja a mesma é palestrada pelo Prof. Jean Carlos Lourenço Costa. Este projeto teve como finalidade desenvolver uma aplicação mobile no modelo de Quiz e o tema escolhido por mim foi sobre o coronavírus, devido a situação atual em que o planeta vive de pandemia de Covid-19, portando decidi fazer esse aplicativo com característica mais informativa unindo o aprendizado descontraído de um Quiz.
Este back-end trata-se de uma API-REST feita em NodeJS com a utilização do Express e o MongoDB, contendo um módulo de autenticação e criação de Quiz e possuindo um controle de rotas/endpoints com um middleware responsável pela verificação de token.
Para disponibilizar de modo mais prático e fácil esta API, foi realizado o deploy no Heroku. Para acessá-la e consumi-la clique no botão do Insomnia logo acima e baixe o arquivo json.

🌐 TECNOLOGIAS

Nesta aplicação foram selecionadas certas tecnologias, onde apresentaram maiores diretrizes para que fosse cumprido o objetivo do trabalho. As quais serão descritas a seguir:

✳️ NodeJS

O Node.js é um ambiente de tempo de execução JavaScript de código aberto e de plataforma cruzada. O Node.js executa o mecanismo JavaScript V8, o núcleo do Google Chrome, fora do navegador. Isso permite que o Node.js seja muito eficiente. Ele pode ser usado tanto para Front-End como para Back-End, o que facilita, pois evita ter de aprender uma nova linguagem.

🗄️ Heroku

O Heroku é uma plataforma em nuvem que permite que as empresas construam, entreguem, monitorem e escalem aplicativos. Basicamente um servidor na nuvem, onde empresas e desenvolvedores podem conectar suas aplicações.

🍃 MongoDB

O MongoDB é um banco de dados distribuído, embasado em documentos e de propósito geral, desenvolvido para desenvolvedores de aplicativos modernos e para ser utilizado em nuvem. O MongoDB permite a criação de usuários, configurando seus privilégios de acesso, baseado em usuário administrador, usuários com permissões de leitura e gravação de dados e usuários que podem apenas ler os mesmos.

🔳 GitHub

Github é um serviço web que oferece diversas funcionalidades extras aplicadas ao git. Quase todos os projetos/frameworks/bibliotecas sobre desenvolvimento open source estão no github, e o usuário pode acompanhá-los através de novas versões, contribuir informando bugs ou até mesmo enviando código e correções.

🧩 ARQUITETURA DA API

Esta etapa irá detalhar todo o funcionamento solene do desenvolvimento da API. Foram divididos em categorias e serão descritos os processos e valores integrados ao projeto.

🚨 MÓDULO DE AUTENTICAÇÃO

Esta API-Rest contém um módulo de autenticação de usuário e possui as devidas definições de permissões de acesso aos EndPoints através de um Bearer Token. Foram integradas etapas de validação de criação de usuário, login de usuário, recuperação de senha (onde é enviado um e-mail) e resete de senha.

Atributos Utilizados

🔒 Bcrypt

É um algoritmo de criptografia do tipo Hash para senhas. Onde foi combinado com o Salt (Salted Hashing), que é uma sequência de caracteres, números ou termos adicionados antes da senha, que dão aleatoriedade ao resultado da mesma criptografada, tornando-a mais complexa.

🔐 Dotenv

A maioria dos projetos possuem dados sensíveis, como informações do banco de dados, chaves de “API's”, Secret Keys, entre outras informações. Ele serve para adaptar as variáveis ambiente de um projeto, todas as informações sensíveis ficam armazenadas em um arquivo chamado ".env", assim ele fica fora do controle de versão do software como GIT, SVN e outros.

🗳️ Mongoose

É uma biblioteca do Nodejs que proporciona uma solução baseada em esquemas para modelar os dados da sua aplicação. Possui sistema de conversão de tipos, validação, criação de consultas e hooks para lógica de negócios. Isso significa que o Mongoose traduz os dados do banco de dados para objetos JavaScript para que possam ser utilizados por sua aplicação.

🗃️ Express

É um framework web rápido, flexível e minimalista para Node.js, está voltado para a criação e obtenção dos dados a partir do seu servidor, independente da linguagem que os irá utilizar.

⛓️ Crypto-JS

O CryptoJS é uma coleção crescente de algoritmos criptográficos padrão e seguros implementados em JavaScript usando as melhores práticas e padrões. Eles são rápidos e possuem uma interface consistente e simples.

🏷️ JSON Web Token (JWT)

O método JWT define uma maneira compacta e independente de transmitir informações com segurança entre as partes como um objeto JSON.

📧 Mailer

O Mailer tem sido usado com Node.js, um ambiente de execução Javascript server-side, isto é, uma maneira de executar código escrito em javascript do lado do servidor. Uma das eventuais tarefas que o Node.js pode executar é o envio de e-mails. Esta função por ser útil para notificar o contato de possíveis clientes, enviar algum conteúdo para as pessoas que solicitarem, para notificar sobre alguma ação dentro da sua aplicação, etc.

🔄 Nodemon

O Nodemon é um utilitário que monitora qualquer alteração na sua fonte e reinicia automaticamente o servidor. Perfeito para o desenvolvimento.

🚧 Cors

Cross-origin resource sharing (CORS ou compartilhamento de recursos de origem cruzada) é uma especificação de uma tecnologia de navegadores que define meios para um servidor permitir que seus recursos sejam acessados por uma página web de um domínio diferente.




👉🏼 Veja meu Linkedin 👈🏼
👨🏻‍💻 Desenvolvido por Eduardo Pereira Boares. 👨🏻‍💻