Time Track main window, Windows Vista x64
- Be a software version of a time punch clock, for any purpose
- Keep track of time in a persistant format that can be saved
- Cross-platform support (at least Windows, Mac OS X)
- Needs a GUI
- Lightweight, simple to use and set up
I developed this in Java as a standalone desktop program with a GUI using all OpenSource components. I am nearly complete with an initial version that meets all this functionality and I intend to release it as a free-ware app for now, maybe it can be made released as open source by itself in the future.
Implementation
I had really two paths I could have taken with this, one would be to build a dynamic webapp with a RDBMS backend. The second approach was to develop a standalone self-contained application that could be somewhat portable itself. I was hesitant to take on a project that required any sort of server set up and hosting, I am just not set up to do that now, so although the webapp was pretty easily cross-platform being browser based, I didn't like the idea of the dependency on the remote server.
I went with the standalone app approach, in order to be cross-platform and easy for me to develop I went with Java as the source language. I didn't want the program looking like a Java Swing application so I opted for the SWT api which is the basis for the Eclipse IDE and platform, it tends to look more "solid" in my opinion as one of its main features is native look and feel for UI components on every OS. I think so far it is coming along nicely. You can see a side-by-side comparison of the interface in Windows Vista, and on Linux (Ubuntu 10.04, 64-bit)
I have probably spent around 5 weekends and the occasional hour on a weeknight in total since I started building this application. Probably overall time spent has been under 80 hours. It was enjoyable to more or less go through the full development life-cycle for a new project. I got to do design, open-source research, coding and integration, source-control, and complete build scripts in Ant. Even though I may never release a line of code from this, I am building like I could.
In terms of the OpenSource projects that I used a variety of different components in my stack.
- http://www.eclipse.org/swt - Standard Widget Toolkit for all User Interface
- http://db.apache.org/derby - Apache Derby for lightweight embedded relational database connected with JDBC
- http://sourceforge.net/projects/opencsv - OpenCSV library for creation of CSV format exports of data
- http://tango.freedesktop.org/Tango_Desktop_Project - library of free icons
For my build environment, I am using Java JDK 1.6.0_17, Eclipse Ganymede IDE, Junit 3 (for the few automated unit tests that were really helpful with Derby), SVN for source control and builds are done with ANT. Testing was done on Windows Vista SP2 x64 and Ubuntu Linux 64-bit GTK.
RoadMap
On my to do list I still have a number of items I'd like to close out before really wrapping up this release.
- The main table needs to update when changes occur. Currently it is loaded at start up.
- Need to think about an import data function.
- Testing on a Mac
- Implement a more solid connection pool mechanism
- Release strategy. Post on this site? or create an OpenSource project page?
No comments:
Post a Comment