¡Bienvenido a PlatziStore! Somos una plataforma de comercio en línea con una amplia variedad de productos esperando ser explorados. A medida que nos preparamos para nuestro lanzamiento oficial, hemos identificado varios desafíos en nuestra aplicación que necesitan ser abordados.
Desde pequeños bugs hasta tareas incompletas y nuevos recursos por implementar, estamos en busca de soluciones que garanticen una experiencia fluida para nuestros usuarios.
Para comenzar, necesitas instalar las dependencias del proyecto con el siguiente comando:
npm install
Una vez que hayas instalado todo, puedes ejecutar la aplicación con:
npm run start
Para acceder a la interfaz de depuración, visita:
Aquí hay una breve descripción de algunos de los elementos clave:
$app: Es la variable donde renderizaremos nuestra aplicación.$observe: Representa un elemento del DOM que será observado.API: Es una constante que utiliza la FakeAPI de Platzi para obtener datos.
const $app = document.getElementById("app");
const $observe = document.getElementById("observe");
const API = "https://api.escuelajs.co/api/v1/products";Tenemos una función llamada getData encargada de hacer solicitudes Fetch a una API y de construir un nuevo elemento en el DOM:
const getData = (api) => {
// ...
};Además, contamos con una función loadData que obtiene información de los productos:
const loadData = () => {
// ...
};Y, por último, se encuentra la lógica para el Intersection Observer:
const intersectionObserver = new IntersectionObserver(
(entries) => {
// ...
},
{
rootMargin: "0px 0px 100% 0px",
}
);
intersectionObserver.observe($observe);- Estudia y analiza la estructura de la API: fakeapi.platzi.com.
- Implementa la API de productos, iniciando desde el producto 5 y obteniendo los siguientes 10 productos.
- Usa el
localStoragepara guardar la posición inicial ("pagination"). Asegúrate de actualizar esta posición con cada nueva petición para traer los siguientes productos. - Diseña la lógica para implementar un scroll infinito utilizando el Intersection Observer.
- Diseña una estructura HTML adecuada para mostrar cada producto.
- Crea un artículo con la clase "Card" que muestre la imagen, título y precio de un producto:
<article class="Card">
<img src="imagen.png" />
<h2>
Producto
<small>$ Precio</small>
</h2>
</article>- Asegúrate de que el archivo
index.htmltenga los elementos mínimos de SEO (por ejemplo,title = "PlatziStore"y una descripción adecuada).
Al cerrar o recargar la pestaña, es esencial que los usuarios vean los primeros 10 productos:
- Muestra los primeros 10 productos.
- Limpia el
localStorage. - Refactoriza la función
loadData()para usar Async/Await.
Dado que la API "fakeAPI" proporciona 200 productos, utilizaremos la paginación tal como se describe en su documentación. Al llegar al final de la lista de productos:
- Muestra el mensaje: "Todos los productos han sido obtenidos".
- Termina la observación del elemento "observe" con el Intersection Observer.
¡Pon tu solución en vivo! Despliega la aplicación en uno de los siguientes servicios: GitHub Pages, Netlify o Vercel.
Si sientes que puedes aportar o mejorar algún aspecto del proyecto, ¡te animamos a hacerlo! Haz un "Fork" de este proyecto, resuelve los desafíos y envía un "Pull Request" a js-challenge.
El proyecto js-challenge está bajo la licencia MIT. ¡Úsalo con confianza!