TimeTagger
About this project
Tag your time, get the insight - an open source time-tracker with an interactive user experience and powerful reporting.
- Website: https://timetagger.app
- Demo: https://timetagger.app/demo
- Docs: https://timetagger.readthedocs.io
- CLI tool: https://github.com/almarklein/timetagger_cli
- TimeTagger_VSCodeExtension (3d party)
Introduction
TimeTagger is a web-based time-tracking solution that can run locally or on a server. It's aimed at individuals and freelancers, and has the following features:
- Intuitive UI based around an interactive timeline.
- Lightweight feel by use of tags rather than projects.
- Reporting in PDF and CSV.
- Set daily/weekly/monthly targets.
- Integrated Pomodoro method (experimental).
- Responsive: works well on small and large screens.
- Sync between devices.
Under the hood
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 :)
Install and run
TimeTagger is implemented as a Python library that 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.
Self-hosting your time tracker
Docker images are provided via the Github container registry, so you can use e.g. Docker-compose to easily host your own server.
There are two variants, one that runs the server as root inside the container and a nonroot variant that runs as user 1000:
See this article for more information about self hosting.
Authentication using credentials
If you want multiple users, or if the server is not on