JavaScript de Cero a Experto / Proyectos + retos
Proyecto: buscador con API, búsqueda en vivo y paginación
"Mi Bolsillo" vivía en tu navegador; este proyecto sale a internet. Un buscador que consulta una API real MIENTRAS escribes, con paginación, estados de carga y cancelación de búsquedas viejas. Son los patrones exactos de cualquier app que muestra datos de un servidor —de Spotify a tu futuro dashboard en el trabajo.
Reto
Buscador con API y paginación
Qué debes construir
Un buscador de publicaciones sobre la API pública jsonplaceholder.typicode .com/posts (100 posts de prueba, CORS abierto, sin llave). Debe:
- Buscar mientras escribes, pero con
debounce: no una petición por tecla, sino una tras una breve pausa al dejar de escribir. - Paginar: mostrar de a 8 resultados con botones "Anterior / Siguiente".
- Mostrar los tres estados (módulo 10): cargando, error y resultados (incluido el "sin resultados").
- Cancelar búsquedas viejas con
AbortController: si escribes rápido, la respuesta de una búsqueda anterior no debe pisar la nueva.
Requisitos concretos:
- Debounce de ~400ms en el input: escribe "hola" rápido → una sola petición, no cuatro. (Aquí usas una versión simple; lo construyes a fondo en los retos del módulo.)
- URL con parámetros:
?q=<término>&_page=<n>&_limit=8. La API filtra y pagina por ti en el servidor. - Paginación honesta sin depender de headers: "Siguiente" se deshabilita cuando llegan menos de 8 resultados (última página); "Anterior", en la página 1.
response.ok: un 404/500 NO rechaza elfetch(la trampa del módulo 10) → chequea y lanza tú.- Cancelación: cada búsqueda nueva aborta la anterior; el
AbortErrorjamás se muestra como error al usuario.
Reglas
- Datos de la API al DOM con
textContent/createElement, nuncainnerHTML(módulo 7: viene de fuera, es dato no confiable). - Los tres estados son excluyentes: o cargando, o error, o resultados.
- Guard
iniciar()conDOMContentLoaded. - La búsqueda vacía puede mostrar los primeros posts (sin
q) o un estado inicial —tú decides, pero sé consistente.
180:00
Cuando estés listo, arranca el reloj.
Qué sigue
Estado local, datos remotos… falta el tercer sabor de app: la interactiva con tiempo. El último proyecto es un juego de trivia con temporizador, puntaje y una máquina de estados (módulo 13) que orquesta menú → jugando → resultado. La lógica de juego que sostiene desde un quiz hasta un Wordle.