============================================================================== WORK TRACKING FACILITATOR ============================================================================== The Work Tracking Facilitator (WTF) is a simple project time tracking system designed to minimize the amount of time a given end-user has to spend tracking daily time spent on project and non-project tasks. The goal of the system is to limit as much as possible the burden on the end-user who must track their time. WTF is intended for medium to small companies (less than 1000 users). It is not intended to be a comprehensive tracking system. Rather, it intentionally cuts corners and makes certain assumptions so that for the use-cases it supports, it may be most efficient. ------------------------------------------------------------------------------ Configuration and Enviornment ------------------------------------------------------------------------------ WTF is written in Perl and runs in Apache2 under mod_perl2. Its data store is a MySQL database. To aid in efficiency, WTF connects to and synchronizes with a Bugzilla database for user accounts and project lists. The WTF environment must consist of: * Apache2 * mod_perl2 * Perl (version 5.8 or later) * MySQL (version 4 or later) Although WTF should in theory run on different operating systems, it has only been tested on Linux (specifically Debian and CentOS). An instance of Bugzilla is required for WTF to properly function. Although WTF does not necessarily require Bugzilla code, it does assume the existence of a functional Bugzilla database (in MySQL) from which it can pull user account information and open projects. When WTF synchronizes with the Bugzilla database, it checks the user account table and open bugs. Bugs that have the component of "Tracking" and are not marked "Closed" should display as open projects in WTF. Against these users are allowed to track time. ------------------------------------------------------------------------------ Installation and Setup ------------------------------------------------------------------------------ 1. Setup the environment including Apache2, mod_perl2, Perl (version 5.8 or later), and MySQL (version 4 or later). 2. Setup a MySQL user account for WTF that will have access to select, insert, update, and delete all "wtf" tables. 3. As a sufficiently privileged user, run the "./db/create.sql" script against your MySQL installation to create the "wtf" database. 4. Setup a read-only MySQL user account on your Bugzilla database. 5. Edit the "./lib/WTF/Config.pm" file, replacing the default configuration with your own. 6. Edit the "./httpd.conf" file and each of the files in the "./util" directory, replacing the "use lib" paths to the appropriate strings for your environment. 7. Execute the "./util/update_db.pl" file to synchronize your "wtf" database with your Bugzilla database. 8. Manually alter the "employee" table, switching "admin" to 1 for yourself (assuming you have a user account in the Bugzilla database). 9. Add a record in the "authz_employee" table allocating the "authz_admin" authorization to yourself (assuming you have a WTF user account by this time). 10. Edit whatever Apache2 configuration file or files you like to reference the "./httpd.conf" file, then restart Apache. 11. Go hit the WTF root URL and hope for the best. 12. Setup a crontab similar to this: 0 23 * * 1,2,3,4,5 /var/www/wtf/util/email_notify.pl 0 23 * * 6 /var/www/wtf/util/weekly_status.pl (Obviously, change the full path to whatever is appropriate.) ------------------------------------------------------------------------------ Copyright, License, and Disclaimer of Warranty ------------------------------------------------------------------------------ Use of this module implies the reading and agreement with the license under which this software is release. That license can be found in the "license.txt" file included with this distribution. ------------------------------------------------------------------------------ To Do List ------------------------------------------------------------------------------ The following is a list of the known improvements WTF needs: * Better error handling (i.e. switch die to croak, warn to carp, etc. and deal with those errors gracefully and intelligently * Logging system with common and inherited settings