Habit tracking & statistics from the command line interface or an app.

For individuals, business, and *non-commercial organizations.

Features done:

Planned

*Free plans for non-commercial organizations and individuals.
*Monthly rollups for non-commercial organizations, yearly for individuals.

To install:

Usage example:

$ did work overtime
["2009-05-09 14:59:04 +0100,,overtime"]

$ did work miss a bug
["2009-05-09 14:59:04 +0100,,overtime",
"2009-05-09 14:59:12 +0100,,miss a bug"]

$ did work miss a bug
["2009-05-09 14:59:04 +0100,,overtime",
"2009-05-09 14:59:12 +0100,,miss a bug",
"2009-05-09 14:59:14 +0100,,miss a bug"]

$ did work anticipate a bug
["2009-05-09 14:59:04 +0100,,overtime",
"2009-05-09 14:59:12 +0100,,miss a bug",
"2009-05-09 14:59:14 +0100,,miss a bug",
"2009-05-09 14:59:20 +0100,,anticipate a bug"]

$ did work communicate     
["2009-05-09 14:59:04 +0100,,overtime",
"2009-05-09 14:59:12 +0100,,miss a bug",
"2009-05-09 14:59:14 +0100,,miss a bug",
"2009-05-09 14:59:20 +0100,,anticipate a bug",
"2009-05-09 14:59:31 +0100,,communicate"]

$ did work release    
["2009-05-09 14:59:04 +0100,,overtime",
"2009-05-09 14:59:12 +0100,,miss a bug",
"2009-05-09 14:59:14 +0100,,miss a bug",
"2009-05-09 14:59:20 +0100,,anticipate a bug",
"2009-05-09 14:59:31 +0100,,communicate",
"2009-05-09 14:59:36 +0100,,release"]

$ did work catch a bug
["2009-05-09 14:59:04 +0100,,overtime",
"2009-05-09 14:59:12 +0100,,miss a bug",
"2009-05-09 14:59:14 +0100,,miss a bug",
"2009-05-09 14:59:20 +0100,,anticipate a bug",
"2009-05-09 14:59:31 +0100,,communicate",
"2009-05-09 14:59:36 +0100,,release",
"2009-05-09 14:59:46 +0100,,catch a bug"]

$ tally work
{"overtime"=>1,
"miss a bug"=>2,
"anticipate a bug"=>1,
"communicate"=>1,
"release"=>1,
"catch a bug"=>1}