Olá!! Este é um projeto full-stack que criei sendo esta a API do próprio, aqui o usuário poderá fazer as chamadas
para obter algumas informações, desde se cadastrar até montar o seu time pokemon.
Esse projeto foi feito utilizando a API PokeAPI: https://pokeapi.co/
💻 As tecnologias usadas no projeto foram:
- TypeScript
- Node
- Express
- MongoDB
- Mongoose
- Jest
- Supertest
- Axios
- Eslint
- Dotenv
- Bcrypt
- Cookie Parser
- Cors
- Dayjs
- Jsonwebtoken
- Nodemailer
- Yup
- Ts-node-dev
🖥️ Link do repositório do front do projeto: https://github.com/FernandoLuppo/PokeDex
📚 Link da documentação: https://documenter.getpostman.com/view/25854787/2s9YC1Xa23
- Registro (post) - http://localhost:8080/user/register
- Login (post) - http://localhost:8080/user/login
- Logout (get) - http://localhost:8080/user/logout
- New User Infos (put) - http://localhost:8080/user/new-infos
- User Infos (get) - http://localhost:8080/user/infos
- New Token (get) - http://localhost:8080/token/new-token
- One Pokemon - (post) - http://localhost:8080/pokemon/get-one
- Pokemon Evolution - (post) - http://localhost:8080/pokemon/get-evolution
- All Pokemon - (post) - http://localhost:8080/pokemon/get-all
- Add Pokemon - (put) - http://localhost:8080/pokemon/add
- Get Team - (get) - http://localhost:8080/pokemon/team
- Remove Pokemon - (delete) - http://localhost:8080/pokemon/remove/(id)
- Check Email - (post) - http://localhost:8080/recover-password/check-email
- New Password - (put) - http://localhost:8080/recover-password/new-password
Register: Essa rota serve para o usuário se cadastrar no banco de dados, os valores usados para acessar essa rota é:
- name
- email
- password
Essa rota possui validação feita com YUP, todos os valores são obrigatórios, name precisa ter no mínimo 3 caracteres, valor email precisa ser
preenchido com um email válido, password precisa ter no mínimo 5 caracteres, para a segurança do usuário a senha é criptografada e é salva
assim no banco
Login: Essa rota serve para o usuário logar no aplicativo, com isso ele terá acesso a novas rotas, os valores dessa rota são:
- email
- password
Essa rota possui as mesmas validações que a rota de registro, e ao logar o usuário receberá um Access Token e um Refresh Token para fazer
as validações de rotas.
Logout: Essa rota serve para o usuário deslogar da aplicação, com isso os tokens também são limpos
New User Infos: Essa rota serve para trocar algumas informações do usuário como nome e email, seu valores são:
- name
- email
Essa rota possui as mesmas validações referente aos mesmos campos das rotas register e login.
Get Infos: Essa rota serve para pegar algumas informações do usuário como nome e email
New Token: Essa rota serve para quando o access token do usuário expirar, ele usa o refresh token para criar novos tokens, o refresh token é passado por uma validação caso ele seja autêntico são gerados novos tokens, um novo access token e um novo refresh token.
One Pokemon: Essa rota serve para pegar apenas um pokemon, a resposta desta rota vem com mais informações do uq a rota All Pokemon, o valor dessa rota é:
- id
Id pode ser tanto o nome quanto o próprio id do pokemon.
Pokemon Evolution: Essa rota serve para pegar a linha evolutiva de um pokemon escolhido pelo usuário, seus valores são:
- id
Id pode ser tanto o nome quanto o próprio id do pokemon.
All Pokemon: Essa rota serve para pegar mais de um pokemon, os valores são:
- {pokemonList: {"start": 0, "end": 20}}
O valor start é o inicio da lista de pokemon que irá retornar, o end é a quantidade de pokemon que irão retornar.
Add Pokemon: Essa rota é protegida e o usuário tem acesso apenas se estiver logado, ela serve para adicionar
um pokemon ao time do usuario, caso o usuário já tenha atingido o limite de pokemon em seu time que no caso são 6 ele irá
retornar um erro, os valores são:
- id
Get Team: Essa rota serve para pegar o time do usuário e o próprio também precisa estar logado para ter acesso.
Remove Pokemon: Esta rota serve para remover um pokemon do time do usuário, ele precisa estar logado para ter acesso a essa rota, o valor é o id ou o nome do pokemon, porém diferente das outras rotas o valor tem que ser passado por parâmetro.
Check Email: Essa rota serve para enviar um email com o código para o usuário criar uma nova senha, o valor dessa rota é:
- email
Essa rota é validada com o YUP e em relação ao envio de emails é enviado o código apenas para os que já foram cadastrados.
New Password: Essa rota serve para criar uma nova senha para o usuário, o valor da rota é:
- password
- email
Essa rota também é validada com o YUP e em relação a senha ela tem a mesma validação da página de login e registro, precisa ter pelo menos
5 caracteres













