Creating a Cross-Platform Banking Demo App within a short deadline

This was an interesting experience. In order to pass step 2 of an interview process for a remote mobile developer job I had to recreate an app showcases on https://pttrns.com within a 2 week deadline, despite the fact that I (and all other candidates of course) have either a day job or existing contracts to work on. I was going to choose TaskRabbit, but I ended up deciding the world didn’t need another TaskRabbit clone. What it needed was to show that finally one can write an app that has to handle sensitive information in such a way that you really can write once, test everywhere, and then deploy everywhere.

So I chose PayPal and set about writing a very rudimentary (in terms of features) banking app, but one that proved that it could run on iOS, Android, MacOS, and UWP (Universal Windows Platform) while sharing both the behind the view code and the UI/View code. This I manged to do, and you can check it out for yourself on GitHub: https://github.com/mrwcjoughin/matthewjoughin-bankingapp-xamarin

What I learned is that while creating the application and the views in general were quick using Xamarin.Forms (my platform and tool of choice), getting everything to work in a cross platform manner was easier said than done. The key trick was making sure I had all the packages I needed to successfully execute on delivering this app, and that they all worked on all platforms. This I managed to do through alot of determination, sweat, tears, and trips to the kitchen to make coffee. The key packages that gave trouble was the encryption one, and I ended up having to use a different one for UWP than for the rest — because Microsoft doesn’t support its own package on its own platform if one is doing AES Encryption! So for that platform only I used PCLEncrypt — which worked fine.

Please checkout the code on GitHub, play with it, and let me know if you have any questions!