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 >