Clube Superela: Developing a mobile app with Xamarin — Part 2

Joilson Cisne
Superela
Published in
2 min readAug 25, 2016

We will show here the last update about the project to build the new mobile app for Superela using Xamarin.Forms (Android and iOS).

As the Lead Mobile Developer at Superela, I thought that would be fun (and hopefully util to someone else) to share my learnings throughout this exciting journey of developing my first mobile app after years of web development.

In Part 1, it was defined a list of features that should be implemented as a PoC (Proof of Concept) project. The main purpose of that PoC was to assure that Xamarin.Forms would be a good fit or not for the project. The PoC was 2-week long and all the proposed features were somehow implemented. So, we were good to go with Xamarin.Forms.

After the PoC

Since it was a PoC, almost none of the code developed could be reused. The main goal was to be fast, so apply good practices for maintainable code was not in mind.

For the final project, the first thing to do was defining the structure to be followed. As common decision for Xamarin.Forms project, the MVVM pattern was the way to go.

MVVM decisions

Two main decisions were made regarding the use of MVVM in our project:

The first one was a big helper, since it reduced the amount of boilerplate code related to common implementation of MVVM. If you had already developed any project using MVVM, you'll know what I mean. Other built-in functionalities were very handy as the use of Dependency Injection with the SimpleIoC container, a basic but also very useful IoC container for starting projects.

The decision to have ViewModel-based navigation was important so that we could keep the Views as simple as possible. And more, if we decide to change our UI layer, we will not have to reimplement the navigation (if week keep the same ViewModels, of course). With that, the code is well prepared to a possible transition from Xamarin.Forms UI to Xamarin.iOS/Android UI.

The App

Another big decision in the development process was to implement the core features, and just after that, start improving the UI of the app.

The features implemented so far:

  1. List most recent questions
  2. List popular questions
  3. List questions of a given category
  4. Navigate to a given question
  5. Login/registration (email+password)
  6. Login/registration (Facebook)

Three basic features are still in progress:

  1. List answers of a question
  2. Create a question
  3. Answer a question

Demo

Below there are 2 videos showing the current state of the app:

Android

iOS

That's all for now

If you have any comment or suggestion, please leave a comment. And if you liked it, please tap the little heart below and help to spread the word. ;)

See you on the next post.

--

--