kennedy-f / teste-desenvolvimento-web

Teste para vaga dev desenvolvimento web

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Pokedex

Kennedy Ferreira da Silva

Aplicação

Backend

Tecnologias usadas

Frontend

  • React
  • Redux
  • Bootstrap
  • Axios
  • StyledComponents

Backend

  • Node
  • JWT
  • Express
  • MYSql
  • Sequelize
  • Bcrypt

A aplicação contém um admin que se encontra no caminho "/admin" úsuario: admin@admin.com e senha: admin

ps : não foi trabalhado o layout do admin... ainda :/

Token Algumas das rotas da API necessitam de um token JWT gerado a partir do login do usuário com uma validade de apenas 1 dia, para fazer login faça um POST na rota "/login" enviando no corpo da requisição o "email" e "password" de Admin e terá como retorno o token

Senha A senha é encriptografada utilizando o Bcrypt.

Exclusão A opção de excluir não exclui realmente os pokemons por questões de segurança, apenas muda o status de ativo para deletado sendo assim poderia ter futuramente um histórico de alterações em um pokemon. No cenário ideal teríamos uma segunda tabela apenas salvando os dados de quem alterou (como ip, nome, etc..)

Imagens

Optei por não fazer um upload de imagens pois percebi que o numero da pokedex de um pokemon é também o número da imagem dele no bucket oficial dos pokemons. Além do que isso garante uma velocidade maior para a minha aplicação e um gasto menor com um bucket na AWS além de ter que buscar e subir a imagem respectiva de cada um dos pokemons.

Escolha do banco Foi cogitada a ideia de utilizar o MongoDB, porém a ideia de fazer relacionamentos em um NoSQL mesmo sendo possível quebra a necessidade de usar um NoSQL então preferi utilizar um banco de dados relacional, nesse caso o MySQL.

Transformei o .xlsx em um .json e a partir dele eu fiz uma migração uma controller de migração, para transformar em 3 tabelas diferentes além de ter uma tabela reserva com todos os dados do json unificados.

Tabela de pokemons

Essa tabela contem todos os dados dos pokemons, como seu nome, atk, def, stam, stat_total e cp1 além do campo status e createdAt e updatedAt

Como chaves estrangeiras temos o campo type_1, type_2, weather_1, weather_2, esses campos armazenam apenas os ID de suas tabelas respectivas.

Como alguns pokemons estavam sem seu family_id preferi não criar uma tabela secundaria para fazer esse relacionamento, no momento a aplicação web utiliza daqueles que tem esse campo para trazer em tela as futuras evoluções de um pokemon

As outras duas tabelas são as de Types e Weathers e ambas contém apenas id e name além do timestamps de createdAt e updatedAt

Deploy

Para fazer deploy preferi utilizar o heroku pois no momento não estou com nenhum servidor VPS a disposição como os da digital ocean para fazer deploy.

O admin ainda está meio cru e tem o que ser melhorado além de a aplicação necessitar que se passe mais das funcionalidades do front pra dentro do redux, como o filtro e a busca que devem ser transformados em components ainda.

API

A API se encontra nesse repositório e lá tem mais informações sobre a mesma.

About

Teste para vaga dev desenvolvimento web


Languages

Language:JavaScript 99.2%Language:HTML 0.8%