A simple self-hosted time tracking app. Track time per project and task, with multi-user support.
# 1. Clone / copy this folder to your Pi (or any Docker host)
# 2. Edit docker-compose.yml and change SECRET_KEY
# 3. Run:
docker compose up -d --buildThen open http://your-pi-ip:8080 in any browser.
Default credentials: admin / admin
- ▶ Live timer — start/stop with one click
- ✏️ Manual entries — add past time entries
- 📁 Projects — color-coded, create as many as you need
- ✅ Tasks — optional sub-level per project
- 📊 Reports — hours by project and by user, filterable by date
- 👥 Multi-user — each user sees only their own time; admins see all
- 📱 Mobile-friendly — works great in phone browsers on your LAN
Data is stored in a named Docker volume. To back up:
# Export database
docker exec $(docker compose ps -q backend) \
sh -c "sqlite3 /data/timetracker.db .dump" > backup_$(date +%F).sql
# Restore
cat backup_2024-01-01.sql | docker exec -i $(docker compose ps -q backend) \
sh -c "sqlite3 /data/timetracker.db"docker compose pull
docker compose up -d --buildYour data is safe in the named volume and won't be affected.
Edit docker-compose.yml:
| Variable | Description |
|---|---|
SECRET_KEY |
JWT signing secret — change this! |
8080:80 |
Change 8080 to any port you prefer |
- Backend: FastAPI + SQLite (Python)
- Frontend: Single-page HTML/CSS/JS (no framework)
- Server: Nginx
- Deploy: Docker Compose