Looks good! A few comments I have: Have your editor align your code for you, there are a number of tools out there to help you with this, and it makes the code much more readable You define variables with let a lot rather than const in many scenarios where you could (and should) be using const . It's good practice, adding an extra layer of safety, among other things. This is arguable, but having separate presentation and container components makes code easier to read. You have a few large components, with a lot of JSX in the render function, which itself it complicated to read. Related to the above point, make many smaller, more composable components. It's a lot easier to understand (1) rather than (2) (1) <Product> <ProductImage img={img} /> <ProductName name={name} desc={desc} /> </Product> (2) <div className="product"> <div className="product__image"> <img src={img}/> </div> <div className="product__name"> <h3>{name}</h3> <p>{desc}</p> </div> </div>