Toggl iOS/Android app

The Toggl mobile client is a project made-up by two UI side clients, one for each system (iOS or Android) and a library to share the common business logic. This project is fully implemented using C# and Xamarin platform and cross-platform techniques. The clients serve as complement to the Toggl’s main product, a web based time tracker.

Architecture

As most of Xamarin projects, the Toggl mobile clients have a common library with the follow content:

Besides, therea are two platform projects, one for Android and another for iOS that contain the UI code using system native API. This code is fed by the data generated inside the common library.

Screenshot

The whole projects is inserted into a MvvM architecture where the Rx(reactive extensions) code is used as glue between layers.

Screenshot (image source)

The most complex part of the whole project is the remote data synchronization. The Toggl app has offline capabilities and collects user input without network connection. Once the connection is restored, the clients execute the conflict resolution algorithm in order to drive server-side and client-side data to the same state. The principle “last writer wins” is used.

Services