Tempus Cura

So, what is TempusCura?

TempusCura is a lightweight time tracking and project planning app that helps teams of contractors and consultants, as well as their customers, keep track of task progress and time spend across multiple projects.

I usually have a host of projects running simultaneously – some for customers, some of my own. They all go through different phases of more or less activity, and keeping track of (and planning for) the time used and needed for each, eventually became problematic enough that I decided to write an app to solve the problem.

I know apps don’t have manuals, and I have worked hard to make the interface simple and intuitive, but I figured it could potentially save myself a couple of hours in the long run if I had somewhere to point to when questions pop up, and this page is it 🙂

1. Registration


TempusCura is a hosted service and requires you to sign up for a user account which you can easily do by pressing the “Create Account” button on the login screen.

In order to create the account, you will need to supply a valid e-mail address and the password you would like to use for the account. You must also provide a nick-name which is the name by which TempusCura will present you to other users – keep it short and avoid spaces if possible – it makes it easier to read.

If you accept the terms of service, and press “Create Account” you will be taken straight back to the login screen with user-id and password already filled in.

Just hit “Login” to get started.

2. Projects & In-App Purchases


Seat or Subscription?

All data registered in TempusCura must belong to a Project, and because TempusCura is a hosted service and hosting costs money, there’s a fee associated with creating a project. You can choose to pay this fee once for each project you create or join, or you can choose to subscribe to the Tempus Cura service, whatever is more cost effective for your particular needs.

With a subscription you can create as many projects as you like, and be invited to join as many projects as you can handle, as long as your subscription is active.

A project is essentially defined by its name, but keep in mind that since TempusCura doesn’t enforce unique project names, trivial names like “TestProject” run a high risk of clashing with whatever projects other team memers may have access to. It won’t break anything, but it might be quite confusing.

3. Main View


The primary view of TempusCura is a calendar of work done. The calendar shows all work done in a given time period for a selected number of project and users. You can view the same data as simple lists ordered by project or user by pressing the project and user tabs next to the calendar.

Note that these three tabs offer a double function as they also hide and reveal the filtering options for time, projects and users, respectively.

The currently selected time period is shown in the upper right corner of the screen, and the currently active projects are listed in the orange bar separating the tabs from the main view. The selected users are given individual columns in the calendar for each day.


With the initial setup of one project and one user, this matters little, and only the selected time period is of any importance, but as the number of projects and users grow, you will probably find the ability to hide inactive projects or irrelevant users quite useful.

While the project and people lists are simply providing a summary of work done by either project or users, the calendar view offers a couple of additional features that may not be immediately obvious:

  1. Press the small calendar icon above the week numbers to toggle month/year overview
  2. Use drag to pan across the selected time period and hours of the day.
  3. Use pinch-zoom to resize the grid
  4. image5Use long-press and drag up or down to register work at any point in the calendar, or tap an existing item to edit it (You can only edit your own work items).

Note that all bold-face values in these property views are using a special spinner UI element which allow you to quickly select a value by touching the element and dragging up or down. 

The calendar uses a unique color for each project and a separate column for each user to prevent overlapping work items and, like the rest of the app, supports landscape mode, providing a better overview – especially on an iPad.


Color coded projects in landscape mode

4. Tasks & Milestones

Future work is described as “tasks” in TempusCura, and belongs to a project; each Task has a due date, an estimate and a description. It may also have an assignee if a specific user is expected to complete the task. You define tasks for a project by going to the project setup page (Open the project list and press the “Setup” button next to the project you wish to create tasks for).

image6The Task list is grouped in Milestones defined by the due-date of the tasks so that each unique due-date becomes a Milestone.

You can long-press any cell in the task list to edit the order of tasks (including removing or moving a Task from one Milestone to another).

Each Task is shown next to its estimate and a progress bar which indicates the total time spend on the Task relative to the current estimate. Tapping a Task opens up the Task details view which, apart from showing Task details, has a build-in timer function.

When the view has been visible for a few seconds, it will assume that the user has begun working on the task and will start measuring time. When you leave the view, you will be prompted to register work based on the elapsed time.

The timer can be manually started and stopped by tapping the TC logo.

5. Teams

The total group of users that may access any given project is considered the projects “team”. Users are invited to a project by the project Owner – this role is always assigned to the person who creates the project. Once invited a user can be given one of several roles:

  1. Owner: May alter the project itself; invite new uses and delete old ones or change their roles. The owner may also lock the project.
  2. Member:  Is actively working on the project. A member may add work to- and edit tasks in- a project.
  3. Customer: A customer is able to view the work done and may edit and create tasks, but will not himself work on the project.
  4. Auditor: Has read-only access.

When a new team member is added to a project, the owner may choose to pre-pay a license for the new user.

6. Advanced Settings & Little Details

The TempusCura app has a number of additional features that are strictly client-side. This is partly a privacy concern and partly a performance issue, and the features in question are:

Currency & Wages

These can be set up by each user individually, but are not maintained centrally on the server (they are, however synchronized via iCloud to other devices owned by the same user).

The thought is that this type of information is often confidential and governed by more or less mysterious relations that are hard if not impossible to map in a generic application. By keeping them in the app, each user can set them up identically if they have the information available or they can completely ignore it if they don’t care, but TempusCura is not in any risk of exposing information that it should not.

The actual currencies are maintained centrally and updated daily.

Local Cache

In order to guarantee a high level of server performance and to avoid excessive load times when projects grow large, the app maintains a local copy of historical data and only loads data from the server when something actually changes.

This cache is stored on the device and though fairly compact, obviously grows over time. To clean up your device selectively, you can go to Project Setup for each project and press the Storage tab – here you will see the current cache size and you will find a button to clear the cache as well. Bare in mind though, that clearing the cache will simply cause TempusCura to rebuild it by downloading all items again – if you wish to avoid this, you must either leave the project, or if you are the owner, archive the project to prevent it from syncing again.


You would be right to be concerned with privacy when hosting business critical projects on a public web service like TempusCura, and I make no attempts at suggesting that data stored on the TC server is in any way safe from unfriendly attacks.

The solution to this problem is not to build a vault around TempusCura, but instead to ensure that what is stored in the database is worthless to an intruder. To this end, TempusCura provides a simple mechanism of encrypting text strings before they are send to the server and decrypting them again on reception. This means that the server never sees the original text, nor has any means to get to it. The password is known only by the client and is used with salt to generate a 128-bit AES key for a reasonable high level of security.

The immediate consequence of this design is that you as a user is responsible for protecting and keeping track of the key phrase for the project. You will need to make sure your entire team is using the same key phrase but whether you do this by un-encrypted e-mail, write it on a whiteboard or post it on facebook is your choice, but a choice that should be made with some consideration.

In particular:

  • The server cannot recover your data or your key if you loose it.
  • The server cannot verify that the key you enter is correct so if two users enter different keys, TempusCura can’t prevent them from creating a mess.

A less obvious side effect is that you cannot change the key phrase for an existing project without losing the old data. The server is not able to re-encode the data to match the new key phrase because it doesn’t know either of the two keys, and letting the client do it is downright dangerous due to the parallel nature of TempusCura, never mind how easy it would be to mess up the entire project by entering an incorrect key.

In other words – If you plan to use encryption: Make the choice when you create the project and make the password a good one!


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s