Overtime control

Need to know how much are you working overtime, what is your current balance? Need to report? This Android app is written to make this easy.
Get it on Google Play

Please send bug reports and new feature suggestions to overtime@meska.info . Or be our beta tester - get the newest versions, ask for the features you need, address the bugs you see! Also, developer blog may be interesting for you to read.

The history

In my new job, I was instructed to enter working hours into the company's time management system. This system is something like Excel spreadsheet - start time, stop time, activity, project. There is a set number of hours per week to work and no need to work more (respecting some mandatory presence times)

After documenting the short breaks manually, I realized that I start pulling non stop from morning till evening, because it is too complex now to document a pause, and I do not want reprimands for not writing down these 10 minutes I could easily afford with my time balance.

And when there is time to go home? The system does not provide the real time view of the accumulated overtime. It is only seen in monthly summaries. It is really difficult just to remember. I realized I stick to the the old rule of comming and leaving at some expected time. Even after till deep midnight a week before due some urgent client request.

Indeed, during some projects with very tight schedule I manage to accumulate over a week of overtime. My inability to dissipate it later by just leaving an hour earlier when the things are not so pressing started to cause problems for the management team. In the country I work, all time must be accounted and respected.

I started to use the time tracking apps already available in Android Playstore, paid apps including, and dropped them one after another. Most of them are written for freelancers that mostly just want to log the duration spent on the particular activity. As a rule, they do display any kind of the cummulated overtime balance, and some even do not generalize time spent on multiple activities into shared totals. Exporting data from device is often very difficult is supported at all, and I wanted easy ways to copy/paste my entries when I finally put data into the companys time tracker.

This is why I wrote this app. It is much easier to use, at least for me. One button to start, one button to stop. I move data from the app to the management system weekly working longer a single time - way less distractive. The company seems satisfied with my reports.

What it does?

The app shows real time balance of your weekly and total overtime.

It is useful when you need to work fixed number of hours per week while the start time, the end time and any breaks are somewhat flexible. If you only need to provide times in your report (or do not need report at all), the only setting you really need to configure is the number of set working hours per week. However if reporting the job activities is also required, no problem to configure the activity buttons and log the activity type as well.

Hence you will know your precise overtime balance, at any time, and will be able to provide convincing reports. Freelancers may try the program, while some more specialized freelancer tools may exist.

What it is?

Overtime control is the job activity tracking tool, optimized for the personal use by employer working for a company. It provides also, the app features

It also has many connectivity features (wireless printing, Google Drive, Google Calendar, connect Android watch, etc).

If you need to report data from this application into the company's time tracking system, do this in intervals short enough for you to remember activities in case of the data loss.

The time balance concept

In this app, the time balance is a positive (overtime) or negative (debt) number of hours you would need to work for today only to end the day without any time debt. For the day, the meaning is obvious. For longer intervals, the work history is taken into consideration. For instance, if not to work at all, the monthly debt is one day in the first day of the month but the whole month at the end of the month. If the balance exceeds assumed duration of the single working day, the highest section shows the number of working days. The working day is the expected amount of working hours per day, not simply 24 h.

The main window shows your overtime balance for the current working day, current week and this year (tablets will also show the monthly balance). Blue negative values show the working time remaining for today. For instance, on Monday the weekly balance will assume one day must be done, but on Friday it will assume five days must be done. Similarly, on the October 1 the monthly view will assume 1 day must be done, displaying same requirement as the daily balance counter. However on the October 30 it will assume all month must be done.

Positive green values indicate the overtime. For instance, the reading above could be seen at the beginning of working day: 8:24 hours to work today, 9:33 debt taking early leaves this week into consideration, but due heavy work in the past over seven days (working days - over 60 hours) of overtime have already been accumulated. Some companies allow to take a week off when that much overtime accumulates.

Small numbers on the right show totals rather than balances.

To start counting the working time, you need to clock in. This can be done by pressing one of the activity buttons (the sample values you will later probably override are Meeting, First task and Second task). There are also many placeholder buttons ([+]]) for assigning your specific tasks for them.

As soon as you clock in, the balances start to change, reflecting the real time situation. You can switch between activities at any time, or clock-out by pressing the "clock-out" button. The status line below this button shows the total time spent on this task that you also sometimes need to report. If the log has been reset for the task at least once, it will show unlogged time separately (see below).

Once you have clocked-out, the clock-out button becomes the clock-in button to return to the former task.

The figure here shows the Clock-out button, Oops button, status line indicating 3 seconds only on the task mnpn-257 and how the selected task button is highlighted in yellow when this task in on the clock:

You can suspend or even shutdown / reboot your phone while being clocked in or out - this does not have effect on accuracy as long as you start the program again and press the needed buttons in time for clocking in or out.

The number of required hours per week can be changed in the setting dialog. If you do not need to provide detailed reports on your activities (or no any reports at all), this is the only value you need to configure. The default value is 42 hours per week.

Adding time

Both the main application window and the weekly overview window contain the button to add the arbitrary time range, specifying start, end times and the kind of activity.

This will open the inclusion window allowing to specify all details. This window has been significantly redesigned in comparison to the previous versions. You can choose the task name from the drop down menu item that contains all topics currently present on the task switching buttons, as well as the pred-defined entry "Vacation" (default).

It is possible to adjust the time boundaries or the overall duration of the activity. The two buttons next to the duration set it to the full or half working day. The button next to the start time field sets it to the beginning of the day (this time is configurable via settings).

If you need to specify some unlisted activity, select <unlisted entry> - the name will be asked on the next step. If the entry spans over multiple days, only the configured set work hours per day will be added for each day withing the range.

If the activity spans over multiple days, it will be assumed that the configured daily working time has been spent on every day. This button is often useful for specifying vacations.

The local menu of the main window also contains items to add full free day and half of the free day. These are for adding holidays quickly.

Generic clock-in

"Generic clock-in" (*) can be used to start counting the work time before you can decide to which button the activity should be assigned. This allows to start working on new task immediately, rather than configuring the clocker first. Generic clocking can also be used to include time for determining which task to work on (reading E-mails and bug reports, etc) as part of the later tasks, if such time should not be reported separately. Generic clocking is converted to the normal clock-in (preserving the logged time) by pressing any task button.

Reporting number of hours since the previous report

Some enterprise time tracking systems like JIRA require to enter the number of hours spent since the last time this number of hours has been reported. You enter the time spent on the tag first time. To reset the hour counter, select "Reset log" while the reported task is (or have the most recently been) clocked in. Since then, unlogged and global spent time will be reported separately. You can reset the unlogged time counter at any time with this menu entry, after reporting it.

Unlogged time also shows up in the monthly view. To reset the value of the unlogged time (highlighted), tap the entry to select it and then tap the Share button (also highlighted):

Correcting errors

It is not uncommon to forget clocking in or out. Press the "Oops.." button to specify the forgotten action at the needed time. If needed, you can apply this button repeatedly.

You can also use the "Edit entry" dialog in the weekly view to adjust the entry, as described above.

The edit view allows to select a new job topic and also change the start and end times. Tap on the time field to open selection dialog for changing it.

Editing activity button palette

Long - tapping on the active button or unused placeholder ([+]) opens the edit dialog where you can assign or re-assign the button topic. Setting the topic to empty ("Clear") demotes the button to placeholder. If you need to move the button to another cell in the clocking board, select "Move". This returns you back to the main window. Now click on any other button or placeholder to swap them.

The clock-in board can have more buttons than would fit on the screen. You can access additional space for buttons below by swiping vertically.

Task naming conventions

Tasks have some consistent naming, commonly used in job activity reports. It shows up and is reported as a single piece of text, but this text is displayed on the button in a certain structured way as defined below: This can be entered as could be entered as prefix-task notes or prefix task notes (the real world example could be something like ISO 128 big bug).


Weekly report

In the main window, next to the program name, is a button for producing the most common needed weekly report:

Weekly report window show start and stop times for every tasks performed during the current week, day by day, showing the day total as the last row for every day. The top panel allows navigation to other weeks.

Tap on the entry to open the edit dialog where you can change many details of the record, or remove it entirely. More precisely, the edit dialog opens after tapping on time cells of the table; the entry name cell is not sensitive to make vertical scrolling by swipe easier.


By default, weekly report shows the current week and monthly report shows the current month. You can navigate between week sand months with arrow buttons above the report:

This window also shows the number of hours worked for that week.

Overview (monthly report)

The overview report is available from the application menu (opens by tapping on menu item at top left)

Monthly summary window summarizes time spent on various tasks during the current month (separately logged and unlogged if applicable). To top panel allows navigation to other months. It also has the button to save the monthly report for the current month into the file system of the mobile device.

Printing or exporting reports

Apart from printing (default), the application has two possible locations for saving reports, the internal memory card (true or emulated) or the web-based Google Drive. The reporting method (SD card, Google Drive or print) can be changed in Settings menu and is reflected by the different report icon in the action bar. Printing requires Google Cloud print or some other vendor-specific printing service (Epson, HP for instance) to be installed.

The default report format is HTML but can also be changed to PDF the Settings.

For the SD card backups, the app provides the Backup Manager that allows to select and apply any snapshot from the backup history. Google Drive option does not need this manager as you can use the Google Drive web interface to manage snapshots (latest snapshot is always applied).

Memory card

Memory card does not require Internet connection and works also on devices without Google account. You can take exported data from the phone through USB cable (MTP). The data is always named "Overtime". It may take some time to find it between MTP locations that apper on the desktop file explorer after you connect the device and switch USB connection into data transfer mode.

If your device has multiple card slots (some tablets do), you can select the slot to use in the settings. In such cases one of the cards may be easily removable, and the easiest way for data transfer may be via moving the card from device into the card reader, connected to your PC or laptop.

The device will remember any number of the backups in the past and features the backup manager to select and apply the needed snapshot. Applying backup overwrites the current data, so be sure you to create the current snapshot first if you think you may need it.

Google Drive

The app will create the dedicated folder in the Google Drive, naming entries by month and year. It export in HTML format so you may need to to connect external app like HTML Viewer to display it conveniently (In Google Drive, Right click -> Open with -> Connect more apps -> Search for HTML Viewer).

It may take a minute or about until uploaded reports appears in the Google Drive web interface, and in some cases it may be necessary to repeat the action, if there were connectivity problems during upload.

Build-in server

The Server button in the local menu starts the internal server of the application, where you can point the external browser to. The server window contains web address, consisting of the device IP address, port and one time password sequence that is different every time.

The server allows easy navigation between months through hyperlinks, also buttons to download and apply the global backup (or move all your database to another device).

While in some networks the built-in server may be the most convenient way to work with the report, your administrator may configure the router to prevent this way of communication with device. In this case it may be necessary to use your own wireless access point that must be connected to your desktop and paired with device but need not be connected to Internet.

Simply enter the provided address into address bar of your browser.

The build in server usually works over WLAN and often does not work over GSM networks (because of how firewalls there are configured). For security, the server binds to the IP address of the client it first served and will not respond to requests from other locations. Also, it will stop after you exit the server activity window.

Saved report and built-in server are most useful when entering the logged entries into the company's time tracking system. If you have the report opened on the same machine where the tracking system is running, it is possible to copy-paste values instead of retyping them. Populating a week of work normally does not take more than 2 - 5 minutes, saving lots of time and context switching efforts that would be required to enter these value immediately as the task is done. For the maximum productivity, learn to operate copy-paste buttons with one hand while moving the mouse with another, and use mouse drag to select times and entry names.

Setting the "start of time"

The newly installed app counts all balances from the time of installation. If you change a job or even position, you may need to start counting from some later date. The date from which balances are counted can be set using "Count balances from" entry in the settings. Older entries remain in the database can can be printed, for instance.

Android watch

This app optionally supports Android watch. It is bundled with the small watch app that should be uploaded to your watch automatically (some Wear 2.0 watches may require to install the app separately from the Play Store).

The watch app connects the main app on the phone via Bluetooth, showing the same daily, weekly and total time balance. You can clock-in and clock-out on our watch rather than on your phone, also change the job topic, even if the phone is unreachable at the time. Phone and watch will sync together as soon as the connectivity is restored.

The icon next to the total balance field shows the current status (clocked in or out). If you swipe right to left over this screen, another view will open on the watch, allowing to change the topic:

Swipe up and down to see the new topic you want to select, and tap on this topic to choose it. As usually in the watch, swipe left to right to cancel this activity without action.

The topic you are currently on is highlighted, and it should be positioned so that it is visible. Tap on it to "clock out" (no activity).

The list of the possible topics matches the available buttons on the main phone app and will be synchronized after you change something on the phone.

As a rule, users keep the phone is suspend/sleep mode for the most of time. In this mode, Bluetooth messages from watch cannot be received, and must be queued on the watch side. If you clock in and clock out on a watch extensively, for more synchronization it is possible to disable sleep mode while Overtime control is running (in Settings). This would have no effect if the device is not paired with Android watch at all.

Important: watch connectivity

It is OK to clock in or out on watch when it is not connected to the phone but of course you need to connect them to get the complete job history on the phone. In case of any problems, please check if Bluetooth is on and if watch is shown as "connected" in Android Wear helper app local menu. The watch may be disconnected automatically if kept far away from the phone for a long time. If your watch is not connected, connect it with menu item similar to the shown in the picture below:

After re-connecting, switch back to the Overtime control app. Usually app and watch should become consistent in just a few seconds.

Using watch component without the phone component

If your watch supports Android Wear 2.0, you can visit Play Store and install the app directly on the watch, bypassing the phone component. You can still clock-in, clock-out and track your overtime balance using the watch only. This operation mode does not support logs, reports or multiple activities and is more suitable for personal tracking that does not need to be communicated.

To compute the weekly and total overtime correctly, the stand alone watch app needs to know how many hours per week are you expected to work. This can be set in the additional screen that opens by swiping right to left over the topic selector:

Set the expected number of hours per week and press the button on the top to apply changes. Swipe left to right to exit without action.

Swiping top to bottom in stand alone watch app opens the simple settings dialog. You can turn the vibration alert on and off there.

These additional screens are disabled for the embedded watch app that knowingly comes from the phone.

Pressing this button also always resets the overtime balance to zero, even if the value below have not been changed. You may prefer to reset the balance and count from scratch after missing clock in or out for a significant time, or for extended absences like vacations. If this looks too restricting, install the phone component as well. The watch app will detect the phone component, restoring full functionality.

If you miss clock in or clock out in this mode of operation, swipe down to up on the main screen to open the "Oops" window. This window provides selector, similar to the working hours selector. Here you can adjust the time of your last action. Selector does not accept invalid input (time in the future or too deep in the past). This screen is not available for the app that is bundled within the watch app (use watch Oops button instead).

What's on the logo?

First, very old locomotives did not have the speed measuring device, yet engine driver needed to keep they speed under control. It was difficult without the device, and accidents have happened. The logo depicts an old style tachymeter from Pilatus mountain railway line, still operational. It is not a very fast train, somewhat 10 km/h typically, so the scale ends at 15.