The primary objective is it is very private. You can host on your own infra that you can only access. You control where you keep the PDFs. There is no common web server. It uses the same file format as gtimelog. No changes.
- Prints Invoice PDFs
- Prints Timesheets
- Provides Estimates
- Sends Emails
- Allows web based task time tracking
- Android app for time tracking
- Grant customers access to monitor weekly timesheets
- Append task times to Jira/Gitlab issues/etc
- Generate Report
gt -r -m this_month
- Save Report -
gt -c -r -m this_month
- Bill to PDF
php gt.php --bill -p aurum
- Make all active bills together
php gt.php --bill -a
- Remake new PDF
clear;XDEBUG_MODE=debug php gt.php --bill -p pwx -d 2023-10-01
Gtimelog has been my oldest and most simple time tracking app. Originally this project started with just a command line tool for using gtimelog.
Later had setup a git based timelog.txt sync system for the many dev stations I use. This helps keep my timelog.txt same in all machines. Like a desktop in one place and my mac on another.
Later using other PCs where all setup was not done or if it was Windows. I still need to do time tracking. So this is now this is gradually also progressing towards web based time tracking. This is just for cases when command line linux-like env is not setup to run php/gtimelog/git/ssh.
Already a setup of git for storing timelog.txt
helps in web migration cause it always has latest copy of the timelog.
The main data of timesheets is using timelog repo. This code does not use any database. Invoices are kept in as JSON files. They are sync with AWS S3 (Bill::syncS3). PDF is generated and also synced to S3. client-projects.json
is kept in timelog repo and symlinked to config/client-projects.json
The timelog itself is a private repo. :) It has various confidential info about customers, their rates, currency, exceptions. Occasionally even special invoice entries.
- clone your timelog repository
- clone this repository
- do a composer install
- make a copy of
.env
from.env.default
- edit the
.env
file based on the current system settings - add this cloned path into your local $PATH env variable
To add a new entry:
gt "project2: doing something"
To repeat the last entry
gt last
To add a away ** between work and then repeat the last entry
gt away
To make new bill based on last calender month's work
gt -b -p projectName
It does not do anything else like make reports,etc (though I could). For that you can use the GUI gtimelog itself.
The minimum requirement by this project template that your Web server supports PHP 8.1.