Building an existing application from scratch to learn MVVM, Repository Pattern and Test Driven Development