Timesheet can be installed using pre-build docker images or as a binary.
Application can run in Docker containers. Server image size 31 MB, DB image size 320 MB.
If you are hosting it, supported platforms are:
- Linux, MS Windows, macOS, Raspberry Pi
- PostgreSQL DB
- Update Application settings, Vacation settings and Warning limits to meet your needs. See Configuration chapter.
- Use Backup & Restore to export demo data, update csv files and import back your projects, rates, consultants and holidays. See Backup & Restore chapter.
Enjoy. You are good to go ...
Is accessible on Administration page:
Below is default and commented timesheet.yaml
configuration file shipped with a product.
### Default configuration file
######################
# Reporting settings #
dailyWorkingHours: 8 # Used to calculate weekly and monthly expected working hours, can be changed in UI
dailyWorkingHoursMin: 8 # Used to highlight if reported less, can be changed in UI
dailyWorkingHoursMax: 12 # Used to highlight if reported more, can be changed in UI
# Rate used for vacations
vacation: "Vacation"
yearlyVacationDays: 20 # Used to calculate weekly and monthly expected working hours, can be changed in UI
# Rate for additional vacations. If not used, leave blank "" and set yearlyPersonalDays: 0, can be changed in UI
vacationPersonal: "Personal Day"
yearlyPersonalDays: 3 # Used to calculate weekly and monthly expected working hours, can be changed in UI
# Rate used for additional vacation intended for sick day. If not used, leave blank "" and set yearlySickDays: 0, can be changed in UI
vacationSick: "Sick Day"
yearlySickDays: 2 # Used to calculate weekly and monthly expected working hours, can be changed in UI
# Categorize all rates into one of these types used on Reported Overview page
isWorking: "work" # when consultant works, can be changed in UI
isNonWorking: "not-work" # when consultant dows not work, examples: vacation, sick, personal day, public holiday, vacation, unpaid leave, ..., can be changed in UI
########################
# Application settings #
SSL: false # true/false, if server has SSL certificate set to true to use HTTPS, false = HTTP
GIN_MODE: "release" # "debug" or "release" - switch server app mode
url: "timesheet.simplesw.net" # URL on which application is running
# PORT: "443" # port on which application is running
PORT: "8080" # port on which application is running
# DB type
dbType: "postgresql" # allowed types postgresql or mysql
# Production URL - will be read from production environment config variable
# If set, Database settings section variables will be ignored
DATABASE_URL: ""
# Log folder, relative to timesheet folder
logFolder: "logs"
# # Folder for uploaded data, relative to timesheet folder
uploadFolder: "data/uploaded"
uploadFolderTemp: "data/uploaded/temp"
# csv data files which are loaded via command "timesheet db --load all"
data:
consultants: "consultants_cloud.csv"
rates: "rates_cloud.csv"
projects: "projects_cloud.csv"
reportedRecords: "reported_records_cloud.csv"
holidays: "holidays_us_2019.csv"
export:
location: "data/exported" # select an empty and an existing folder
#####################
# Database settings #
# DB backup settings - backup data can be imported directly by a command "timesheet db --load all"
backup:
location: "data/backups" # select an empty and an existing folder relative to timesheet/data folder
rotation: 14 # how many backups back will be kept
interval: "daily" # daily or weekly - how often the DB backup should be done
# DB credentials
# used for development and testing. Ignored if DATABASE_URL is set
postgresql:
# host: "db" #
host: "127.0.0.1" #
port: "5432"
name: "timesheet"
user: "timesheet"
password: "timesheet"
sslMode: "disable"
mysql:
user: "timesheet"
password: "timesheet"
dbname: "timesheet"
.\timesheet.exe
or ./timesheet.bin
or ./timesheet.app
Web based timesheet application with DB persistence.
Application reads DB and server configuration from timesheet.toml, loads default data if DB is empty and launch web GUI.
Usage:
timesheet [command]
Available Commands:
db Initiate, load. backup DB og generate demo data. See timesheet help db
help Help about any command
routes Prints the list of all available routes
server Starts the server on URL and port defined in config.yaml
Flags:
--config string config file (default is ./timesheet.yaml)
-h, --help help for timesheet
-v, --version Prints application versions
Use "timesheet [command] --help" for more information about a command.
.\timesheet.exe help db
or ./timesheet.bin help db
or ./timesheet.app help db
Initiate, load, backup DB or generate demo data.
Command first tests connection to DB. If succeeds it will initiate, load, backup db or generate demo data and exit.
Usage:
timesheet db [flags]
Flags:
-b, --backup Backup all DB tables in the format used by db --load command
-c, --clean Drop and create all required DB tables
-g, --generate Generate demo data and save them into ./data folder
-h, --help help for db
-l, --load string Truncate DB table/tables and load initial data from files in folder ./data. Options:
all - load all tables
rates | consultants | projects | holidays | reported_records - load selected table
Global Flags:
--config string config file (default is ./timesheet.yaml)
To retrieve reported records per selected period use HTTP GET request on <domain>/api/reported/from/<from>/to/<to>
where
- <domain> - is your domain name
- <from>, <to> - dates in format YYYY-MM-DD
Example: http://localhost:3000/api/reported/from/2020-04-13/to/2020-04-30
All data can be downloaded locally in CSV format, encoded in UTF-8. CSV files can be modified and imported back. Import will delete and replace all existing data.
Check log files using Administration / Logs. Error log should not contain any errors or warnings.
When editing CSV files, save the file using UTF-8 encoding. Compress all into one zip archive before uploading.
Contains all consultants which can report hours.
created_at,name,allocation,disabled
"YYYY-MM-DD HH:MM:SS","consultant name","allocation between 0 - 1",true/false
"2019-01-14 00:00:00","Evan You","1",false
Contains state holidays per selected year.
created_at,date,description
"YYYY-MM-DD HH:MM:SS","name of the holiday"
"2019-01-01 00:00:00","2019-01-01","New Year's Day"
Contains rates which can be selected by any consultant. Rates are categorized into working work and non-working. Category names can be changed but update also timesheet.yaml.
created_at,name,type
"YYYY-MM-DD HH:MM:SS","rate name","work or non-work"
"2019-01-14 00:00:00","Standard","work"
"2019-01-14 00:00:00","Vacation","not-work"
Contains projects on which consultants can report the work and default project rate.
created_at,name,rate,disabled
"YYYY-MM-DD HH:MM:SS","project name","rate name",true/false
"2019-01-14 00:00:00","Vue","Standard",false
Contains all reported hours. Hours (N.N) can be a decimal number between 0 and 24. Project, rate and consultant are names of existing records from corresponding csv files.
created_at,date,hours,project,description,rate,consultant
YYYY-MM-DD HH:MM:SS,YYYY-MM-DD,N.N,project name,description of the work,rate name,project name
2019-01-10 10:00:00,2019-01-01,6,Vue,Updates of all Vue.js documentation examples using typescript,Off-site,Evan You
Follow these steps to upgrade:
- Export your data as described in Backup & Restore chapter
- Stop running timesheet binary, replace
timesheet
folder with a new version and start new timesheet binary. Optionally configure and use one click./deploy.sh
upgrade script. - Import saved data as described in Backup & Restore chapter
Free for education and non-commercial usage. Pay for the commercial usage of the application to support further development and maintenance via PayPal.
Currently I am working on a Pro Version of Timesheet for enterprise. Along with support, some of the planned features include:
- User management/login
- Permissions
- HTTPS
- Plugin for import/export
- Reporting metrics
- Cloud version
If you or your organization would like to help beta test a Pro version of Timesheet, please get in touch with us via email: [email protected]
Released on April 07, 2020
- Fixed date update when record is moved to another week
- Fixed dark/light theme switching and make light theme default
- Use Go 1.14.1 and Quasar 1.9.13 with all dependencies updated
- Local DA config files updated - DB port
Released on January 03, 2020
- Dark mode
- Use Go 1.13.5 and Quasar 1.5.11
- Update config for cloud version
Released on October 10, 2019
- Administration - ability to add, hide/show and delete consultants and projects from UI
- Show managed data statistics on Administration and home page
- Server can generate demo data via the command line
- Table of Contents in the documentation
- Clean up and initialize DB when deployed
- Use Go 1.13.1 and Quasar 1.1
- Docker compose, dockerfiles and configuration for dev and production versions
Released on July 23, 2019
- Styling and logo
- New breadcrumbs
- ESC on search deletes the text, prepend delete search text icon
- Overview page elements rearranged
- Fixed remaining weekly and monthly total remaining time
- Use Go 1.12.7 and Quasar 1.0.5
Released on July 03, 2019
- Table on previous weeks contains more space
- Consultants, projects, and rates selects are sorted alphabetically
- Home page graph - added filter by year
- Available working time computation fixed
- Administration / upload - parametrized url and port, uploaded file name is parsed on the fly
- Upgrade to Quasar 1.0.2, Go 1.12.6, npm replaced with yarn
Released on June 24, 2019
- API to retrieve reported records in selected period
- Home page listing top 10 projects
- Footer showing app version and server name
- Material Design 2.0
- Documentation contains API description, mentions UTF-8 for exported files
- Week unlock button moved on Reporting page
- Breadcrumbs added
- Axios security bug
- Overview - table pagination added, shows all records
- Record dates saved in UTC
- UI migrated from Vuetify to Quasar framework
- Refactor component names
Released on April 24, 2019
- Help page contains links to new feature and bug report forms
- Duplicate record will create new record on the next day
- Daily hours shown red in weekly overview if was reported more than 24 hours per day
- Allow to report with a warning more than 24 hours per day
- Update to Vuetify 1.5.13, GO 1.12.4 and latest 3rd party GO packages
- README cleanup and code refactoring
Released on March 30, 2019
- Add release 1.2.1 in docs
- Import/Export text clarification
- Consultant cannot report > 24 hours
- HTTPS support
- Update to Vuetify 1.5.8
Released on March 20, 2019
- MySQL support
- Dark / Light mode theme switch
- DB not available - log human error instead of an exception
- Documentation typos
- Upgrade to Vuetify 1.5.7
- Build with Go 1.12.1
- Show server name and port on About page
Released on March 14, 2019
- Documentation created
- Scrollable data table
- Faster responses on user interface
- Show message if log file is empty
- State holidays export contains dates
- Replaced backend GO negroni and gorilla mux with gin
- Replaced moments.js with date-fns
- Update to Vuetify 1.5.6
- Update Travis configuration on Go 1.12
- Added deploy shell script
Released on March 7, 2019
- Previous weeks are loaded faster
- Weeks and consultants can be changed directly on the Overview page
- Removed footer, main toolbar takes less space
- Disable all fields in previous weeks unless editing is enabled
- Warn if entered date is not from this week
- Validation on reported hours, allowed number: 0 - 24
- Validate maximum reported daily hours during record duplication
- Validations on entering hours and days
- Backup archive contains exported csv files without subfolders
Released on December 2018
The first publicly released version