When configuring the plugin it would make sense to name the token as publicKey as it's more explicit, and there's no need of a secretKey in this source plugin.
Generating pages for products would be a better fit for a theme or starter, and instead leave the source plugin to only source content and generate nodes.
One of the great things about working with Gatsby is the ability to use gatsby-image library. To use this properly, we'll need to create local image nodes from the remote URL.
We can reduce the overall code structure to live inside gatsby-node.js instead of separate files, since there isn't much going on under the hood anymore.