#time-tracking #productivity #cli

app ct-tracker

A simple CLI time tracking tool using ct_tracker_lib

2 releases

0.1.1 Mar 15, 2021
0.1.0 Mar 13, 2021

#2721 in Command line utilities

MIT license

68KB
1.5K SLoC

ct

A command-line time tracking tool.

ct on crates.io

What is ct

ct is, as it says in the top, a CLI time tracking tool, written in Rust, which tracks your time in a project based way.

Planned usage

Because this has just started development, all if this can change.

Start a new project

This will be done automatically when using start on a non-existant project.

$ ct create ct
Created new project 'ct'

Tracking time of a project (likely only before v0.2.0)

Start tracking a new project:

$ ct start -p ct
Created new project 'ct'
Started tracking project 'ct'

Start tracking an existing project:

$ ct start -p ct
Time spent on project 'ct' already: 8h5m4s
Started tracking project 'ct'

Start tracking an existing project, while another one is being tracked:

$ ct start -p ct
Already tracking project 'npp'
Stopped tracking project 'npp'
Time spent on project 'npp' already: 8h5m4s
Time spent on project 'npp' in this session: 4h0m0s

Time spent on project 'ct' already: 8h5m4s
Started tracking project 'ct'

Start tracking a new project, while another one is being tracked:

$ ct start -p ct
Already tracking project 'npp'
Stopped tracking project 'npp'
Time spent on project 'npp' already: 8h5m4s
Time spent on project 'npp' in this session: 4h0m0s

Created new project 'ct'
Started tracking project 'ct'

Stop tracking a project:

$ ct stop -p # without a specific project
Time spent on project 'ct' already: 8h5m4s
Time spent on project 'ct' in this session: 4h0m0s
Stopped tracking project 'ct'
$ ct stop -p ct # with a specific project
Time spent on project 'ct' already: 8h5m4s
Time spent on project 'ct' in this session: 4h0m0s
Stopped tracking project 'ct'

Tracking time of a task in a project (v0.2.0)

Start tracking new task:

$ ct start ct.tracking
Started tracking task 'tracking' in project 'ct'

Start tracking an existing task:

$ ct start ct.tracking
Time spent on 'ct.tracking' already: 8h5m4s
Started tracking task 'tracking' in project 'ct'

Stop tracking:

$ ct stop #without specific task
Stopped tracking task 'tracking' in project 'ct'
Time spent on 'ct.tracking' already: 8h5m4s
Time spent on 'ct.tracking' in last session: 4h0m0s
$ ct stop ct.tracking #with a specific task
Stopped tracking task 'tracking' in project 'ct'
Time spent on 'ct.tracking' already: 8h5m4s
Time spent on 'ct.tracking' in last session: 4h0m0s

Start tracking a task, while another one is currently going on:

$ ct start ct.export
Already tracking task 'tracking' in project 'ct'
Stopped tracking task 'tracking' in project 'ct'
Time spent on ct.tracking already: 8h5m4s
Time spent on ct.tracking in last session: 4h0m0s

Started tracking task 'export' in project 'ct'

Roadmap/planned features

0.1.0

  • Ability to track time in a JSON file
  • For now only project based time tracking
  • Basic reporting of time
  • The ability to list already existing projects (for now only projects)
  • The ability to clear all projects
  • The ability to delete a specific project

0.2.0

  • Task specific time tracking
  • Ability to add/subtract time manually from a task/project
  • Colored output, using termcolor for example
  • Make ct configurable using a config.json/config.toml
    • Default save location
    • Parameter defaults (color, etc.)
    • Time format
  • Somehow be able to be backwards compatible with 0.1.0
    • Upgrade command to upgrade old records
    • Legacy project based time tracking

0.3.0

  • Exporting the time spent to markdown (and other formats)
  • Report (and export) time per project in multiple formats, e.g.:
    • Time spent per day
  • Ability to report time spent on a day

Not planned currently (but nice to have)

  • Encrypting time spent
  • Backup option
    • Ability to backup tracked data and restore a backup
  • Multiple users (?)
  • VS Code extension (?)
    • UI integration
    • bound to workspace
      • Somehow integrate with git (see below)
  • Git integration
    • Scan path from which ct is called, check if it's a git repository and use some metadata from there (project, branch, etc.)
  • A GUI client, maybe using something like libui

Dependencies

~5–15MB
~200K SLoC