This article has been published on medium. Please find a link to the article here Link to GitHub repo can be found here