Premise

My first serious Android app that I have been working on almost every day for and an hour or two since december 2018. I wanted to learn android so after a couple of courses I started working on this project. The idea for this app came to me after I realized that tracking daily working hours by hand is really tedious and error-prone.

The app premise is to track how much time you spend doing a certain task it might be work related, a new skill you want to learn or just track how much time you spend doing something.

Development

This app was developed using a lot of Android Jetpack components because they were really prevalent as most of the official android tutorials use it. The project has undergone two big refactors, the first one was adding Dagger 2 to the codebase, and the second one was adding databinding to most of the layouts

I wanted the app to be fast and responsive, and because of that I didn’t want to use a network database like Firebase. To save data the app uses SQLite with Room along with Kotlin coroutines.

Testing

Unit test were mostly done on the ViewModels, without the use of Mockito, in hindsight the library may have been useful. For UI testing I used Espresso without Robolectric, but gave up after the main screen, because of the limitations, and weird bugs that I encountered.

Features

  • A background service that serves as the apps stopwatch
  • A calendar in a form of a bottom sheet that allows you to quickly select a span of dates either by tapping the days of a month or by using buttons that correspond to a certain selection (Today, this week, this month)
  • Multiple selections that allow you to view times for multiple tasks
  • Database export and import feature to and from an external file
  • The ability to reorder your tasks
  • Charts for visualizing tracked time

I currently don’t have the time to develop it further, it is currently in the beta stage and will be for the foreseeable future.