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.
As most of Xamarin projects, the Toggl mobile clients have a common library with the follow content:
- Persistence logic: Access to databases, DAO definition, synchronization mechanism.
- View Models: Helper objects to encapsulate the functionality of the views.
- Service access layer: Accesses to the remote APIs.
- Business logic: Logic to process user input and incoming data.
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.
The whole projects is inserted into a MvvM architecture where the Rx(reactive extensions) code is used as glue between layers.
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.
- Developer team lead
- Frontend development and maintenance
- Content creation
- UX/UI design collaboration