So over the past couple of weeks I’ve been spending some more time on the time tracking project. The first thing I had to do was come up with a requirement list that we as a company needed for the application. Whilst many of the suggestion from my colleagues were items we could potentially compromise on, there were a few deal breakers for us. The first and most important was that we need a system which we could access for anywhere. The reasons for this is that as a company, we all work in different geographical locations. We also work on the same project at the same time so having records stored locally on my computer wouldn’t help the others see how much time we had already spent on a particular project. Finally, when traveling we might not have access to our own machine. Therefore based upon this requirement all solutions that run and store their information locally on your desktop machine were ruled out.
The next big things for us, is that we don’t use Windows for our day to day work. This is not to say that we don’t use Windows at all, in fact in our line of work we need to test to see how they perform under Windows. However, in general we use Apple macs and linux boxes to perform most of our work. So ideally we need an application that runs on Apple mac and/or Linux. The problem with this is that majority of tools created are aimed at Windows, and of those there are very few that are cross platform or have had a version created for another platform. This is not to say that we couldn’t gotten around it using some clever machine virtualization, but that is just something extra that in all reality we don’t want to do.
This didn’t really leave many options left. So from what I was left with, I sat down and evaluated the possibilities with the rest of our requirements in mind. I felt that none of what was left really fitted what we wanted to get from the time tracking applciation. For example, very few of them would allow me to store information about clients, projects and types of contracts in a manner that I could then easily query and get information from.
Based on this I’ve decided the route we need to go is to create our own personalized time tracking project which meets our needs. This of course means we can customize it to meet our full requirements and depending on the result possibly even offer it to other. So the next stage is to develop the structure of the database that will be used to record all this information.
Database Structure

Just for those of you that aren’t family with database diagrams, each of the blocks with a name inside it relates to the tables that I’m suggesting for our database. So we have one table to hold all the employees of the company, a table for all our clients, a table for each project and so on. Then each of the lines between these tables displays the relationship between the tables. So as an example the table clients is related to the table projects in that one client can have none, one or many different projects. The many element is denoted by the “crows foot” symbol on the end of the line.
So now it’s the big part, implemented the application. So the next question I have to face is how.








