Time Tortoise: Self-Hosting Task Backlog


This is one in a series of articles about Time Tortoise, a Universal Windows Platform app for planning and tracking your work schedule. For more on the development of this app and the ideas behind it, see my Time Tortoise category page.

In order to be viable for self-hosting, Time Tortoise needs a few more key features. Here are the ones that I think are the most important.

Safety Features

One of the worst things a program can do is lose user data. To depend on Time Tortoise as a primary time tracker, users need assurance that their carefully collected time data is safe. Time Tortoise currently has some deficiencies in that area.


Backup is a basic defense against data loss. Fortunately, Time Tortoise doesn’t lock the TimeTortoise.db file while it’s running, so any backup program can make a copy of it. An even safer option would be for Time Tortoise to automatically make a daily copy of the database (with an appropriate unique name) in conjunction with the daily summary file feature. Think of it as a simple implementation of a point-in-time backup system.


It can be annoying when a program continually asks “Are you sure?” when you take actions. But some operations are catastrophic enough that they deserve a confirmation prompt. For example, deleting an activity in Time Tortoise requires just one button click, doesn’t prompt for confirmation, and deletes all associated time segments. This could result in the user unintentionally deleting a lot of data. The daily backup would reduce the severity of this situation, but a warning message is nevertheless warranted given how rarely users need to delete an activity. In contrast, deleting a single time segment probably doesn’t require a prompt.

Transaction log

Yet another form of backup would be to write the day’s time segments into the daily summary file. This would be useful information for a daily summary, and could also serve as a way to manually restore time segments that were inadvertently deleted.


Currently, Time Tortoise only saves to the database when the user takes an action. This could lead to an in-progress time segment being lost if the program or computer crashes. Therefore, it would be prudent for Time Tortoise to automatically save periodically while the timer is running.

Convenience Features

Here are a few small features that would make Time Tortoise more convenient to use in its current form.

Link to data directory

UWP apps like Time Tortoise keep their data in %UserProfile% \ AppData \ Local \ Packages \ [Package_Name] \ LocalState. That isn’t a convenient path to type. But the LocalState directory contains files that the user will want to open, such as the text files containing the daily summaries. To help the user get there quickly, it would be helpful to link to the path from the Time Tortoise main window.

Move a time segment

I find that a common occurrence in time tracking is getting a few minutes into a time segment, then realizing that it’s associated with the wrong activity. Time Tortoise allows deleting and adding time segments, and that could be used to correct this situation. But it would be more convenient to be able to move time segments between activities in one step.

Show status of Time Tortoise Companion connection

The Time Tortoise Companion app must be running for Time Tortoise to recognize away time. Without idle time detection, it’s easy to leave one’s computer without stopping the timer, and come back with extra time recorded. Because of the way the two apps are connected via SignalR, Time Tortoise can tell when Time Tortoise Companion is running. It would be helpful to have an indicator on the main Time Tortoise screen to remind the user to start the companion app.

More Features

This is far from a complete list of potential features, but along with the current feature set, it’s enough for a solid self-hosting version of Time Tortoise.

(Image credit: Drew Stephens)