Skip to content

shamilnabi/simple-time-tracker

Repository files navigation

Simple Time Tracker

banner

Simple Time Tracker - a lightweight, minimal time-tracking app designed for individuals and small teams. It provides multiple intuitive views (see Screenshots) to help users review and analyze their tracked time efficiently:

  • The Daily Summary View organizes entries by calendar week and day, ordered by entry start time for a clear chronological overview
  • For higher-level insights, the Weekly Summary View aggregates total hours per project and weekday, grouped by calendar week, enabling quick analysis of time allocation

Live Demo available at https://simple-time-tracker-mcep.onrender.com/

It stores projects and time entries in the browser's LocalStorage

Table of Contents

1. Requirements

  • Python 3.11+
  • Docker and docker-compose (optional, for container usage)

2. Setup and run locally

Create a Python virtual environment:

On macOS / Linux / WSL / Windows (Git Bash):

# create and activate virtual environment
python3 -m venv .venv
source .venv/bin/activate

# install dependencies
pip install -r requirements.txt

On Windows (CMD):

# create and activate virtual environment
python -m venv .venv
.\.venv\Scripts\activate

# install dependencies
pip install -r requirements.txt

With the virtualenv activated and dependencies installed, start the Simple Time Tracker app:

python -m uvicorn app:app --port 8018 --reload

App will be available at http://localhost:8018

3. Start using Docker

Start the app using Docker Compose without additional Python setup:

docker-compose up --build -d

App will be available at http://localhost:8018

Run docker-compose down to stop the container.

4. Database Schema

The project uses a simple relational schema (designed for SQLite by default) with two main tables: projects and entries. projects stores project metadata (unique name and creation timestamp) and entries stores time logs that reference projects via project_id, with start/end times, duration in minutes, and an optional comment. Foreign-key constraints and simple indexes are used to keep lookups fast and ensure referential integrity.

Table projects

Column Type Notes
id INTEGER PRIMARY KEY AUTOINCREMENT
name TEXT UNIQUE
created_at_utc TEXT

Table entries

Column Type Notes
id INTEGER PRIMARY KEY AUTOINCREMENT
project_id INTEGER FOREIGN KEY → projects(id)
date TEXT
start_time TEXT
end_time TEXT
duration_minutes INTEGER
comment TEXT

Schema Diagram

Schema Diagram

5. Screenshots

Daily Summary View groups entries by Calendar Week and Day, ordered by Entry Start Time:

docs/02-daily-summary.png

Weekly Summary View displays total hours per Project and Weekday, grouped by Calendar Week:

docs/03-weekly-summary.png

Releases

No releases published

Packages

 
 
 

Contributors