I was attempting to catch up on the backlog of unread emails from the Stanski mailing list when I came across a brief off-topic discussion on Timesheet / Timetacking software. Now you would have thought that such software would be available by the handful, or better yet, integrated into existing packages. I’m guessing that most accounting packages have some facility to do timesheeting, but it was probably written by accountants, rather than from a user point of view – result is that they are not widely used. This discussion also got me thinking back to a WF/WCF example application on expense reporting and whether I could combine this with the fantastic work that the patterns and practices group at MS did on the Mobile Client Software Factory. Over a series of posts I will attempt to put together a “simple” T&E reporting tool, based around the following requirements (cut and pasted from the discussion on the mailing list):
– Timesheet entry (preferably over the internet)
– Client / project / job management (both billable and non-billable)
– Staff management including the ability to analyse planned staff availability and setup schedule of rates
– Expense management
– Decent reporting / charting / analysis / modelling functionality
– Ability to export into csv, xml etc
– Invoicing / billing management
– Email notifications (timesheets due, upcoming staff availability, billing/invoicing due etc)
– Be able to track Time and Expenses OFFLINE
– Be able to integrate with TFS
You will note that I have added my own requirements which are that the application should be able to operate offline and should be able to source project and workitem information from TFS. As we are increasingly mobile (laptops, pdas, phones) we are more than likely to want to record this information when we are away from our desks. For example, when you take a client to lunch, you want to be able to add that expense when you pay for the meal, instead of remembering to claim it later in the month.
So, the rough architecture of this application will be a core database (SQL Server 2005) which publishes data (filtered by user) using replication to a client database (SQL Server Everywhere). The client application will be a WinForms application that works on both PDAs (Windows Mobile), Tablets, Laptops and Desktops (Windows XP). Timesheet information will simply replicate between the client and server when a connection is available, while Expense information will use a queued (Mobile Client Software Factory) web service (Windows Communication Foundation) call to submit a new expense report. Each expense report will initiate a workflow (Windows Workflow Foundation) that will require approval for expenses over a certain amount.
Ambitious you say….. well you might be right, lets see how it goes 😉