TimeTagger
Tag your time, get the insight - an open source time tracker with a focus on a simple and interactive user experience.
Introduction
TimeTagger is a web-based time-tracking solution that can be run locally or on a server. In the latter case, you'll want to add authentication, and also be aware of the license restrictions.
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 :)
Usage example
This repo is organized as a library, making it quite flexible to apply tweaks. See run.py for an example of how to run it as a web app.
You can also see it in action at https://timetagger.app - you can also purchase an account for $2 per month so you don't have to worry about maintaining a server, backups, and all that. Plus you'd sponsor this project and open source in general.
Installation
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.
# Latest release
pip install -U timetagger
# Latest from Github
pip install -U https://github.com/almarklein/timetagger/archive/main.zip
# Uninstall
pip uninstall timetagger
After installation, copy and execute python run.py to get started.
License
This code is subject to the GPL-3.0 License. Contributors must agree to the Contributor License Agreement to grant the right to use contributions at e.g. the TimeTagger.app service.
Developers
Additional developer dependencies:
pip install invoke black flake8 pytest requests
invoke -lto see available invoke tasksinvoke cleanto remove temporary filesinvoke formatto autoformat the code (using black)invoke lintto detect linting errors (using flake8)invoke teststo run tests (using pytest)
API
TODO