This article has been sitting on my desk for quite some time, and I finally managed to finish it after going through the process of building something from scratch and taking it to its full potential three times in my career. Though the technologies, implementation and users are all different,