In this exercise, we'll continue developing the React Router exercise. Now
instead of static product data we will fetch it from fakestoreapi.com
- main: starting point
- first-version: fetch using useEffect at every render in /products and /products/:id
- second-version: fetch and stores at localstorage (cache)
- third-version: implements cache revalidation
- fourth-version: we use NextJS to leverage React19's new features