HamiltonGJr / culture_power

MÓDULO 02 - Culture Power: Neste projeto, estou desenvolvendo uma aplicação de gamificação para uma empresa "Exemplo". Este trabalho concentra-se integralmente no BackEnd, aplicando de forma prática os conceitos estudados ao longo deste módulo 02.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Logo

Culture Power

MÓDULO 02 - Culture Power: Neste projeto, estou desenvolvendo uma aplicação de gamificação para uma empresa "Exemplo". Este trabalho concentra-se integralmente no BackEnd, aplicando de forma prática os conceitos estudados ao longo deste módulo 02.

Modelos:

Admin {
  name: string,
  email: string,
  password: string
};

Product {
  name: string,
  value: number,
  amount: number,
  description: string,
  photo: string
};

User {
  name: string,
  email: string,
  password: string,
  jewelsAmount: number,
  products: Product[],
  favoriteProducts: Product[],
  photo: string
};

~ Cenários de uso ~

  1. Cadastro de Usuário
  • Informações necessárias: nome, e-mail, senha, foto.
  • Não permitir o cadastro se um usuário com o mesmo e-mail já existir.
  • Criptografar a senha antes de armazenar no banco de dados.
  1. Login de Usuário
  • Informações necessárias: e-mail e senha.
  • Não gerar um token se não existir um usuário com o e-mail fornecido.
  • Não gerar um token se a senha enviada não for compatível com a do banco de dados.
  • Gerar um token e retornar se as credenciais estiverem corretas.
  1. Login de Admin
  • Informações necessárias: e-mail e senha
  • Não gerar um token se não existir um admin com o e-mail fornecido
  • Não gerar um token se a senha enviada não for compatível com a do banco de dados
  • Gerar um token e retornar se as credenciais estiverem corretas
  1. Visualizar Usuário Logado (ROTA PRIVADA)
  • Retornar os dados do usuário logado
  1. Cadastro de Produto (ROTA PRIVADA - ADMIN)
  • Informações necessárias: nome, valor, quantidade, descrição e foto
  • Não permitir o envio se o usuário que está executando a ação não for um administrador
  1. Edição de Produto (ROTA PRIVADA - ADMIN)
  • Informações necessárias: nome, valor, quantidade, descrição e foto
  • Não permitir o envio se o usuário que está executando a ação não for um administrador
  1. Listar Todos os Produtos (ROTA PRIVADA)
  • Deve listar os produtos com quantidade maior que 0
  1. Buscar Produto por ID (ROTA PRIVADA)
  • Deve ser informado: id
  • Deve retornar o produto caso encontrado
  1. Enviar Joia para Usuário (ROTA PRIVADA - ADMIN)
  • Informações necessárias: quantidade de joia, ID do usuário
  • Não permitir o envio se o usuário não existirem
  • Não permitir o envio se o usuário que está executando a ação não for um administrador
  1. Resgatar Produto (ROTA PRIVADA)
  • Informações necessárias: ID do produto, ID do usuário
  • Não permitir o resgate se o produto ou o usuário não existirem
  • Não permitir o resgate se o usuário não tiver joias suficientes
  • Decrementar a quantidade de joias pelo valor do produto
  • Decrementar a quantidade do produto

Tecnologias utilizadas:

  1. BCrypt;
  2. DotEnv;
  3. Express;
  4. JsonWebToken;
  5. Mongoose;
  6. Multer;
  7. Yup;
  8. Eslint;
  9. Prettier;
  10. Ts-Node-Dev;
  11. TypeScript;

About

MÓDULO 02 - Culture Power: Neste projeto, estou desenvolvendo uma aplicação de gamificação para uma empresa "Exemplo". Este trabalho concentra-se integralmente no BackEnd, aplicando de forma prática os conceitos estudados ao longo deste módulo 02.

License:MIT License


Languages

Language:TypeScript 100.0%