This code is all taken from this article, all of the orginal code can be found here. This is purely for educational reasons for myself. The only extra thing that I added was the docker-compose.yml file that helps set up the development environment much easier.