Grad shape
Grad shape

TimeTagger

Time Tracking

About this project

CI Documentation Status PyPI version

Tag your time, get the insight - an open source time-tracker with an interactive user experience and powerful reporting.

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

Technologies & License
GPL-3.0 Python
Quick Deploy

Deploy this project to cloud platforms with one click