Saltar al contenido
←Proyectos
8 de junio de 20262 min de lecturaEn producción

PokeCore: una Pokédex de 1025 Pokémon con carga instantánea.

Cómo hice que moverse entre 1025 Pokémon fuera rápido sin pedir de más: la lista una vez, la ficha antes del clic y las imágenes por fases.

React 19ViteTanStack QueryZustand
PokeCore - interfaz con los 1025 Pokémon
Qué es
Pokédex en español con los 1025 Pokémon: búsqueda, filtro por tipo, favoritos, debilidades y evoluciones.
Mi papel
Proyecto propio: diseño, desarrollo y despliegue en GitHub Pages.
Stack
React 19 · Vite · TanStack Query · Zustand
Resultado
Búsqueda sin latencia de red · fichas precargadas al pasar el ratón · contenido íntegro en español.
Estado
En producción.
Enlaces
Abrir PokeCore (se abre en una pestaña nueva)Ver código (se abre en una pestaña nueva)

Son 1025 Pokémon, cada uno con su ficha, y la PokéAPI no está pensada para pedirlo todo a la vez. El reto era que moverse por ella fuera rápido sin pedir más de lo necesario.

Pedir solo la región que ves

Eliges región, de Kanto a Paldea. La lista de nombres se pide una vez y TanStack Query la guarda una hora; la cuadrícula solo muestra la región elegida. La búsqueda filtra esa lista en el navegador, así que los resultados salen mientras escribes.

El filtro por tipo funciona igual: la primera vez se pregunta a la API y la respuesta se guarda 24 horas, porque los tipos no cambian.

La ficha se pide antes del clic

Cada ficha es una petición aparte, así que la empiezo a pedir al pasar el ratón por la tarjeta. Al hacer clic, normalmente ya ha llegado, y queda guardada media hora.

Primero la imagen pequeña, luego la grande

El componente SpriteImg muestra primero el sprite pequeño y lo cambia por la ilustración oficial cuando carga. Si no existe, prueba con la de HOME, y si nada carga, pone un marcador. Quien lo usa solo le pasa un id.

Todo en español, sin peticiones extra

La PokéAPI devuelve muchos nombres solo en inglés, así que añadí tablas propias con unos 600 movimientos y las habilidades, y una de tipos para calcular las debilidades sin otra petición.

Favoritos sin servidor ni login

Los favoritos van en localStorage y se guardan cuando el navegador está libre, con requestIdleCallback, para no frenar la interfaz. Zustand lleva la búsqueda, el tipo y la región. El login me lo ahorré a propósito: para unos favoritos solo sumaba mantenimiento.

Lo que aprendí: decidir qué pedir y cuándo

La velocidad no salió de ningún truco, sino de pedir la lista una vez, la ficha antes del clic y la imagen pequeña antes que la grande.

Construido porIsmael Manzano LeónFull Stack Developer · leo/ · leosoftware.dev
Abrir PokeCore→ (se abre en una pestaña nueva)

¿Encaja con lo que buscáis? Escríbeme →