Skip to content
A command line time tracking application with some influence from git? Written in Haskell!
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src
.ghci
.gitignore
ChangeLog.md
LICENSE
README.md
Setup.hs
app.cabal
ghcid.sh
package.yaml
stack.yaml

README.md

PlatinumPitanga

A to-the-point cli time tracking application with some influence from git?

Saves the time entries to log.json file in the current directory.

Here is what a log output looks like:

--------------------------------------------
Today: 06:37:33 █ █ █ █ █ █ █ █ █ █ █ █ █  ▂ 
--------------------------------------------
Week:  08:39:16 █  
--------------------------------------------

Blog form edit post nioform                  01:30:42 █ █ █  
Blog                                         02:47:01 █ █ █ █ █  ▄  
Blog - Set dynamic projects                  04:21:32 █ █ █ █ █ █ █ █  ▄  

--------------------------------------------
19:32:07 - 21:56:35
10/03/2019
02:24:27 █ █ █ █  ▆  
Blog - 

18:06:44 - 18:29:18
10/03/2019
00:22:33 ▆  
Blog - 

18:04:43 - 18:04:50
10/03/2019
00:00:07 
Blog form edit post nioform - 

What problems does this solve?

It adds efficiency to logging time - minimal keystrokes.

What are the limitations?

  • It saves the data in a single log.json file - so could be deleted by accident? Make frequent backups!
  • No timezone support (everything is done in UTC).

Instructions

pitanga --help
PlatinumPitanga

Usage: pitanga (COMMAND | COMMAND | COMMAND | COMMAND | COMMAND)

Available options:
  -h,--help                Show this help text

Available commands:
  start                    Start a new task
  stop                     Stop the task that is currently in progress
  resume                   Resume the last stopped task
  log                      Log
  export                   Export
pitangaLog --help 
Usage: pitanga log ([--first ARG] | [--last ARG])
  Log

Available options:
  --first ARG              show first n
  --last ARG               show last n
  -h,--help                Show this help text

pitanga export --help
Usage: pitanga export [--raw-json] [--group-by-day] [--group-by-day-and-task]
                      [--from ARG]
  Export

Available options:
  --raw-json               Export raw values as JSON
  --group-by-day           Sum aggregate group by day
  --group-by-day-and-task  Sum aggregate group by day and task
  --from ARG               dd mm yy
  -h,--help                Show this help text

Workflow

** One word: FZF **

These aliases are highly recommended:

alias ptl="pitanga log --last 5 | less -R"
pts () {
  echo "$#"
  if [[ "$#" = 0 ]]; then
    pitanga start "$(cat tasks.txt | fzf)" ""
  else
    pitanga start "$(cat tasks.txt | fzf)" "$@"
  fi
};
alias ptsp="pitanga stop"
alias ptr="pitanga resume"

I have each "project" in a directory, and within each directory I have a helper tasks.txt file.

For example tasks.txt might have the contents of:

work on abc
investigate xyz
etcxyz
You can’t perform that action at this time.