/pokemon-project

Pokemon Project - Mostra dados dados de pokemons!

Primary LanguageJavaScript

Escolha seu idioma | Choose your language

pt-br language english language


Logo

Pokemon Project - Powered by PokeApi

Mostra dados dados de pokemons!

View Demo


Índice
  1. Sobre o projeto
  2. Utilização
  3. Contato



Sobre o projeto

gif do projeto no desktop


Esse projeto permite o usuário obter alguns dados de pokemons seja na lista padrão, pelo campo de busca ou pelo tipo.

Os dados vem da PokeApi e são filtrados para a exibição.

Ele é totalmente responsivo!

gif do projeto no celular

(back to top)

Feito com

React Vitest JavaScript HTML5 Styled Components

(back to top)

Notas de destaque

Para construção do projeto foi necessário o uso de diversas bibliotecas adicionais como:

  • React Hook Form: para gerenciamento do formulário
  • Zod: para validação do formulário
  • React Spring: para animações de transição
  • React Router: para gerenciar o caminho das páginas
  • useAnimations: para carregamento
  • React Icons: para ícones
  • React testing library + Vitest + Jsdom: para realização dos testes
  • Mock Service Worker: para fazer o mock da API para os testes

Embora muitos desenvolvedores já tenham realizado projetos semelhantes (seria este um evento canônico? 🕸), a experiência de construir os componentes, lidar com diversas condições e lidar com as chamadas de api foi incrivelmente enriquecedora. O processo não apenas solidificou meu entendimento prático, mas também proporcionou insights valiosos sobre a arquitetura e a otimização do código.

(back to top)

Desafios e aprendizados

|💂🏼 | 👮🏼‍♀️| Separação de responsabilidades foi um desafio inicial, porque no começo de um projeto não existem todos os componentes e mesmo com muito planejamento acaba aparecendo algo novo pra adicionar durante a criação.

📜 Formulários no React funcionam de uma forma um pouco diferente do que eu estava acostumado, aqui precisamos gerenciar os inputs de diversas formas e graças ao react hook forms consegui implementar o funcionamento de uma forma mais sucinta e otimizada.

🕵️‍♂️ Ainda sobre formulários a validação impôs um enorme desafio, porque com a criação de schema no Zod podemos determinar a forma que o dado será tratado, eu optei por string o que gerou o questionamento:

"E se o usuário colocar um ID inválido de um pokemon?? Vai ficar fazendo call pra api mesmo sabendo que os dados não são válidos?? 🤔"

Para evitar isso foi necessário criar uma regra que verifica o tipo de input com um regex, se for aceito converte o input em número e dai então utiliza esse input convertido como parâmetro para validar (🤯):

 .refine(
	(value) =>
		/^\d+$/.test(value)
			? ((currentNumber) => {
					return (
						!isNaN(currentNumber) &&
						currentNumber >= 1 &&
						currentNumber <= 1017
					)
				})(Number(value))
			: value,
		{ message: "Must be a number between 1 and 1017" }
 )

💅 Um novo aprendizado foi o uso de Styled Components para ter os estilos dentro dos componentes, as maiores vantagens estão em saber exatamente aonde esta o estilo daquele pedaço específico do código e o uso de props para modificar o estilo de forma condicional.

🎨 O design foi complicado porque não sou a pessoa mais criativa do mundo, ter de navegar pelos intricados detalhes do design exigiu uma consideração cuidadosa de cada elemento visual. Ao enfrentar esse desafio, pude explorar e desenvolver estratégias para superar um pouco as limitações da minha abordagem menos criativa, resultando em um design que, embora desafiador, acabou sendo uma conquista significativa.

📑TESTES! Desenvolver testes para um site React proporcionou desafios estimulantes. A intricada natureza das funcionalidades demandou uma abordagem meticulosa, enfatizando a necessidade de uma cobertura abrangente na testagem automatizada. A criação completa da estrutura de testes, felizmente, elevou consideravelmente a confiança na qualidade do código, proporcionando uma compreensão mais aprofundada nos processos de teste.

Em resumo foi possível aprender e praticar:

  • Testes frontend com React testing library
  • Criação de Mocks de API com Mock Service Worker
  • Componentes e modificação props
  • Formulários e validações usando react hook form e zod
  • Aplicação de useContext
  • Páginas com React router
  • Estilização com styled components

(back to top)

Utilização

Após clonar, baixar ou fazer um fork, utilize o comando abaixo para instalar as dependências do projeto:

npm install

Para rodar os testes utilize:

npm test

Esse projeto te permite:

  • Buscar pelo nome de um pokémon
  • Buscar pelo ID de um pokémon
  • Filtrar pokémons por tipo
  • Ver detalhes como tipos, habilidades e movimentos de um pokémon desejado
  • Como desenvolvedor, rodar testes na aplicação!

(back to top)

Contato

💌 Para me mandar uma mensagem basta usar um dos botões abaixo!

(back to top)