Skip to content

Repository files navigation

Work Log

A local work activity logger that runs on your Mac. Record what you did throughout the day, organize tasks by category and tag, and analyze your time weekly and monthly.

Setup

Option 1: Docker (recommended)

docker compose up -d

Open http://localhost:5555. Data is persisted in ./data/.

# Stop
docker compose down

# Rebuild after code changes
docker compose up -d --build

# View logs
docker compose logs -f

Option 2: Node.js

Prerequisites

  • Node.js 22+ (uses built-in node:sqlite)
  • npm

Install

cd work-log
npm install

Run

npm start

Open http://localhost:5555.

Initial Configuration

Before recording tasks, set up your tags and categories in Settings.

1. Create Tags

Tags group categories. Examples: "Development", "Communication", "Operations".

Go to Settings > Tags, type a name, pick a color, and click Add Tag.

2. Create Categories

Categories are the specific activity types you log. Each category has a name, color, optional tag, and an optional Main flag.

Go to Settings > Categories, fill in:

  • Name - e.g. "Coding", "Meeting", "Code Review"
  • Tag - select from your tags
  • Main - check this for categories that represent core work (used for filtered analysis)
  • Color - pick from the palette

3. Example Setup

Tag Categories
Development Coding, Code Review, Debugging
Communication Meeting, Slack, Email
Operations Deploy, Monitoring, Admin

Daily Usage

Recording Tasks

  1. Open http://localhost:5555 and go to Record
  2. Select Start time (hour and minute dropdowns, 5-min intervals)
  3. Select End time (only shows times after start)
  4. Choose a Category
  5. Type a Description of what you did
  6. Optionally add Detail (supports Markdown - switch to Preview tab to check formatting)
  7. Click Save

Shortcuts:

  • Click any recorded task in the list to auto-fill the start time with that task's end time (for consecutive tasks)
  • The start time defaults to the end of the last recorded task, or 09:00 if no tasks exist
  • Navigate between days with the arrow buttons or date picker

Editing and Deleting

  • Click Edit on any entry to load it into the form
  • Click Delete to remove an entry
  • Time overlap is validated - you cannot save a task that conflicts with existing entries

Timeline

The horizontal timeline at the top of the Record page shows:

  • All tasks as colored blocks positioned by time
  • The 09:00-17:30 work zone highlighted in blue
  • An amber "now" marker (today only)
  • Hour ticks from 5:00 to 22:00

Analysis

Go to Analysis to review your time. Toggle between Week and Month views.

Weekly View

Shows a table with one row per day:

  • Timeline bar showing task blocks with category colors
  • Per-category time columns
  • Daily total
  • Week total with per-category percentages

Monthly View

Same format as weekly, but grouped by week with subtotals and percentages for each week.

Breakdown

Below the daily table, the Breakdown card shows aggregated time with two independent controls:

  • Group by: Category or Tag
  • Filter: Full (all categories) or Main (only categories flagged as Main)

When Main is selected, percentages are recalculated against the main-only total, showing how your core work time is distributed.

Data

All data is stored locally in data/worklog.db (SQLite). This file is gitignored.

Export

Export any day's entries as CSV or Markdown from the Record page (export buttons in the header) or from Settings.

Backup

To back up your data, copy data/worklog.db. To restore, replace the file and restart the server.

About

No description, website, or topics provided.

Resources

Stars

2 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages