Skip to content

Aplicação backend para controle de estoque com rotina de login e autenticação JWT

Notifications You must be signed in to change notification settings

mferreiradb/controleEstoqueAPI

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

73 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Controle de Estoque API

Projeto backend para controle de estoque

Badge Badge Badge Badge Badge Badge Badge Badge

O projeto tem o objetivo de solucionar as dificuldades no gerenciamento de estoque dos mais diversos tipos de produtos, de forma simples e eficaz

Instalação de dependências

  • Typescript

      npm i -D typescript
    
    • Iniciar ts.config

      tsc --init
      
  • Ts Node Dev

      npm i -D ts-node-dev
    
  • Express

      npm i express
    
  • Tipagem para express

      npm i -D @types/express
    
  • Prisma

      npm install prisma --save-dev
    
  • Prisma Client

      npm install @prisma/client
    
  • JWT

      npm i --save jsonwebtoken
    

Rotas da aplicação

Usuários

  • POST /users

    • Criação de usuário
      • Obrigatório o envio dos dados login e password pelo body da aplicação
        • O campo login é único. Logo, não será possível realizar a criação de um usuário que já possui um login existente
  • POST /users/login/

    • Realiza o login, retornando o token JWT para uso nas autenticações
      • Obrigatório o envio dos dados login e password pelo body da aplicação
  • PATCH /users/:idUser/

    • Altera os dados do usuário
      • Obrigatório o envio de ao menos um dos dados: login e password pelo body da aplicação
        • Caso não seja passado nenhum dos dados, retorna um erro
      • Obrigatória a validação do token JWT nos headers da aplicação
  • DELETE /users/:idUser/

    • Exclui o usuário informado nos parametros da rota
      • Deve ser informado no parametro da rota o id do usuário que deve ser excluído
      • Obrigatória a validação do token JWT nos headers da aplicação

Produtos

  • POST /products/

    • Criação de produtos
      • Obrigatório o envio dos dados name_product, purchase_price, sale_price pelo body da aplicação
      • Opcional o envio do dado amount pelo body da aplicação
        • Caso não seja enviado, o valor de amount será definido como 0
      • Obrigatória a validação do token JWT nos headers da aplicação
  • GET /products/

    • Retorna todos os produtos
      • Obrigatória a validação do token JWT nos headers da aplicação
  • GET /products/search?name

    • Retorna os itens nos quais o nome começa com o valor digitado no atributo name
      • Deve ser enviado na rota como query param o atributo name do produto
      • Obrigatória a validação do token JWT nos headers da aplicação
  • PATCH /products/stock/:idProduct/

    • Altera a quantidade do estoque para a quantidade definida no atributo amount
      • Obrigatório o envio do dado amount pelo body da aplicação
      • Obrigatória a validação do token JWT nos headers da aplicação
  • PUT /products/:idProduct/

    • Altera os dados do produto informado nos parametros da rota
      • Deve ser informado no parametro da rota o id do produto que deve ser alterado
      • Obrigatório o envio dos dados name_product, purchase_price, sale_price pelo body da aplicação
      • Obrigatória a validação do token JWT nos headers da aplicação
  • DELETE /products/:idProduct/

    • Exclui o produto informado nos parametros da rota
      • Deve ser informado no parametro da rota o id do produto que deve ser excluído
      • Obrigatória a validação do token JWT nos headers da aplicação

Features

Usuários

  • Deve ser possível criar um usuário

  • Deve ser possível realizar o Login do usuário e gerar o token JWT

  • Deve ser possível alterar os dados do usuário

  • Deve ser possível excluir um usuário

  • Implementação de Hash de senha

Produtos

  • Deve ser possível criar um produto

  • Deve ser possível editar todos os dados de um produto

  • Deve ser possível alterar a quantidade de um produto

  • Deve ser possível listar todos os produtos

  • Deve ser possível pesquisar produtos por nome

  • Deve ser possível excluir um produto

Validações

Produtos

  • Não deve ser possível criar um produto com o nome já existente

  • Não deve ser possível criar um produto sem que o usuário esteja autenticado

  • Não deve ser possível alterar todos os dados do produto sem que o usuário esteja autenticado

  • Não deve ser possível listar os produtos sem que o usuário esteja autenticado

  • Não deve ser possível pesquisar produtos pelo nome sem que o usuário esteja autenticado

  • Não deve ser possível alterar a quantidade de estoque do produto sem que o usuário esteja autenticado

  • Não deve ser possível excluir um produto sem que o usuário esteja autenticado

Usuários

  • Não deve ser possível criar um usuário com um login já existente

  • Não deve ser possível alterar os dados do usuário sem que o usuário esteja autenticado

  • Não deve ser possível alterar os dados do usuário se nenhuma das informações for enviadas

  • Não deve ser possível excluir um usuário sem que o usuário esteja autenticado

Releases

No releases published

Packages

No packages published