Originally written for Medium article but can be used as a sample boilerplate as well
Medium article: Link