18 Oct

SerenityOne MvvmCross Rewrite

I’ve now been working on and developing my SerenityOne Dance Competition Scoring Software for a number of years. It has grown from a concept simply to help speed up the data entry and remove the chances of human error, to a fully automated tablet-based system. From a simple WinForms app with hand-written score sheets, through a number of iterations and rewrites to a server-based system relying upon ServiceStack for REST and Serialization coupled with a Xamarin.Android application running on a fleet of up to ten 9″ Android tablets.

My next revamp of the system is (and will be) to refactor and rewrite the mobile application to use the excellent MvvmCross framework. I did a fair amount of research around cross-platform development for mobile apps and was considering the use of MonoCross but after a bit of reading it felt like MvvmCross is more actively supported.

The advantage to using a framework like MvvmCross is that, in theory, you can write your core application logic once (in ViewModels) and then implement your views in a platform-specific manner for each of the targeted platforms you require. In my case I currently only need to worry about Android, but I’m working towards the picture of eventually releasing iPad and Android apps commercially so that I don’t need to provide SerenityOne as a managed solution, though the business-model of how this might work still eludes me.

I will write some posts as I make progress on my conversion from basic MonoDroid to MvvmCross, along with some links to resources or any gotchas I might encounter. So far I’ve found the MvvmCross Wiki and Samples invaluable, and Stuart Lodge (@slodge) is by far the greatest resource available to support this great project. I hope to be able to provide some handy plugins and contributions to MvvmCross as work on my own projects.