Skip to content

marianarufo/Projeto-Definitivo

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

35 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Projeto Definitivo

📃 Sobre

Bem vindo(a)! Este é meu projeto para o Processo Seletivo da Comp Júnior. O mesmo foi criado buscando solucionar um certo objetivo fictício: um maior alcance dos pequenos empreendedores da arte manual. Sendo assim, o projeto comporta um sistema de cadastro de usuário no qual é possível realizar publicações de trabalhos artesarnais para que outras pessoas possam acessá-lo e conhecer o trabalho umas das outras ou até mesmo apenas para procurar serviços.

  • O projeto consta com duas entidades que se relacionam:

    Usuário que possui várias publicações.
Foi utilizado o relacionamento do tipo One-to-Many, na qual um usuário pode ter vários posts.

👨‍💻 Tecnologias

  • Banco de dados relacional: MySQL

Pelo fato de que eu não possuia conhecimento algum no setor de back-end, o uso do MySQL acabou sendo mais vantajoso, pois o curso de back-end que foi disponibilizado me proporcionou uma base muito boa dos conhecimentos de Node.js e JavaScript em torno deste banco de dados e tornou possivel que meu proceso de entendimento fosse mais tranquilo. Caso eu escolhesse uma outra opção de banco de dados, eu acredito que meu processo de aprendizagem seria mais complexo e demorado.O MySQL é um dos bancos de dados mais populares e seguros, além de que é possivel manipular dados altamente estruturados. Agora que tenho a base do MySQL, estou pronta para navegar por outros bancos de dados e acredito que será muito mais simples aprender mais sobre as outras possibilidades de armazenamento de dados disponíveis.

  • Node.js

  • Express.js

  • DotEnv

  • Sequelize

📚 Documentação

Rotas - Usuário

  • GET /list-all-users : Listar todos os usuários.
  • GET /user-profile : Listar um usuário.
  • POST /user : Cria um novo usuário.
  • PUT /user : Atualiza as características do usuário.
  • DELETE /user : Deleta o usuário indicado.
  • POST /forgot-password : Envia um email de recuperação de senha para o usuário.

Rotas - Posts

  • GET /list-all-posts : Listar todos os posts.
  • POST /post : Cadastro de um novo post.
  • PUT /post/:id : Atualiza as atribuições ao post.
  • DELETE /post/:id : Deleta o post com o ID desejado.

Rotas - Autenticação

  • POST /auth : Autentica um usuário.

Rotas - Upload

  • POST /upload : Realiza o upload da imagem anexada.

Body Examples

  • Criar um usuário:
{ 
    "name":"Exemplo",
    "password": "123",
    "email": "exemplo@gmail.com",
    "user_name": "exemplo_exemplo"
}
  • Criar um post:
{ 
    "user_name": "exmeplo_exemplo",
    "password": "123",
    "image": "imagem_teste",
    "description": "Essa é uma descrição teste!"
}

🛠️ Como rodar o projeto

Pra rodar essa aplcação você precisa ter: Git.

1 - Clonar o repositório

git clone git@github.com:marianarufo/projeto-final.git

2 - Entrar na posta do projeto

cd projetofinal

3 -Instalar as bibliotecas através dos códigos abaixo na pasta raiz da aplicação.

npm install
npm install express
npm install sequelize
npm install jest
npm install dotenv
npm install jsonwebtoken
npm install bcryptjs
npm install jsonschema
npm install multer
npm install nodemailer
nodemailer-express-hendlebars
npm install mysql2
npm install uuid

4- Rodando a aplicação:

npm start

  • Para testar as rotas, foi utilizada a feramenta Postman e Jest.

📚 Libraries:

  • express: gerenciar e adicionar processos de requisições;
  • sequelize: permite criar classes que representam as tabelas do seu banco de dados, permitindo que os dados sejam manipulados a partir de objetos e métodos;
  • sequelize-cli: inclui funcionalidades relacionadas às migrations.
  • jest: framework de teste que permite garantir que a correção de códigos;
  • nodemon: monitora as modificações nos arquivos e reinicia automaticamente o servidor Node.js;
  • dotenv: configuração de variáveis;
  • jsonwebtoken: transmitir ou armazenar objetos JSON entre diferentes aplicações;
  • bcryptjs: criptografia de senhas;
  • jsonschema: possibilita uma estruturação clara e precisa sobre os formatos esperados e retornados pela API;
  • multer: upload de arquivos;
  • node mailer/nodemailer-express-handlebars envio de emails;
  • mysql2:conectar e mandar comandos SQL para o banco de dados;
  • uuid: gerar token;

📰 Documentação Extra:

Documentação no Word

Estrutura do código no Figma

About

Projeto Final - PS

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published