An open source time-tracker based on an interactive timeline and powerful reporting.
Deploy this app to Linode with a free $100 credit!
Tag your time, get the insight - an open source time-tracker with an interactive user experience and powerful reporting.
TimeTagger is a web-based time-tracking solution that can be run locally or on a server. It's aimed at individuals and freelancers, and has the following features:
The server runs on async Python using uvicorn and asgineer - which is fun and bloody fast. It uses SQLite via itemdb to store the data, making it easy to deploy.
The client is a mix of HTML, CSS, Markdown, and ... Python! PScript is used to compile the Python to JavaScript. This may be a bit idiosyncratic, but it's fun! Maybe I'll someday implement it in something that compiles down to Wasm :)
TimeTagger is a Python library and requires Python 3.6 or higher. The dependencies are listed in requirements.txt
- these are installed automatically when you install TimeTagger with Pip.
# Install
pip install -U timetagger
# Run
python -m timetagger
If the server runs on your local machine, you can use single-user mode out-of-the-box.
A docker image is provided via the Github container registry, so you can use e.g. Docker-compose to easily host your own server. See the example docker-compose.yml. See this article for more information about self hosting.
If you want multiple users, or if the server is not on localhost, you may want to provide the server with user credentials using an environment variable or a command line arg (see the docs on config).
# Using command-line args
python -m timetagger --credentials=test:$2a$08$0CD1NFiIbancwWsu3se1v.RNR/b7YeZd71yg3cZ/3whGlyU6Iny5i
# Using environment variables
export TIMETAGGER_CREDENTIALS='test:$2a$08$0CD1NFiIbancwWsu3se1v.RNR/b7YeZd71yg3cZ/3whGlyU6Iny5i'
python -m timetagger
The credentials take the form "
If you have a reverse proxy which already authenticates users (e.g. Authelia) and provides the username through a HTTP header, you can tell TimeTagger to use this information. To configure it there are three environment variables and command line arguments (see the docs on config).
# Using command-line args
python -m timetagger --proxy_auth_enabled=True --proxy_auth_trusted=127.0.0.1 --proxy_auth_header=X-Remote-User
# Using environment variables
export TIMETAGGER_PROXY_AUTH_ENABLED=True TIMETAGGER_PROXY_AUTH_TRUSTED=127.0.0.1 TIMETAGGER_PROXY_AUTH_HEADER=X-Remote-User
python -m timetagger
You can also make use of https://timetagger.app so you don't have to worry about maintaining a server, backups, and all that. An account is just €3 per month. With that you'd also sponsor this project and open source in general.
As usual, copyright applies to whomever made a particular contribution in this repository, which can be inspected via e.g. git blame. The owner of the copyright (i.e. the author) is free to use their code in any way.
This code is also subject to the GPL-3.0 License, to protect it from being used commercially by other parties.
Contributors must agree to the Contributor License Agreement to grant me (Almar) the right to use their contributions at e.g. the TimeTagger.app service. By making a contribution to this project, you agree to this CLA.
Clone the repo and install in development mode:
git clone https://github.com/almarklein/timetagger.git
cd timetagger
pip install -e .
Install additional developer dependencies:
pip install invoke black flake8 pytest pytest-cov requests
Then these commands can be used during development:
invoke -l
to see available invoke tasksinvoke clean
to remove temporary filesinvoke format
to autoformat the code (using black)invoke lint
to detect linting errors (using flake8)invoke tests
to run tests (using pytest)Please login to review this project.
No reviews for this project yet.
Kimai is a free & open source timetracker. It tracks work t…
An app that automatically tracks how you spend time on your…
Traggo is a tag-based time tracking tool. In Traggo there a…
Comments (0)
Please login to join the discussion on this project.