node package manager


npm version Downloads Build Status

Imdone is text based kanban processor with a simple syntax that uses comment tags like TODO and FIXME and todo.txt format. This model allows the user to create and modify tasks using the keyboard and automatically establishes a link between their tasks and work. Get imdone-atom for Atom editor to see your projects board and this library in action.

Imdone format

Imdone aims to keep you in the flow of your work while capturing tasks to be accomplished later. Most kanban tools require the user to use a UI. Imdone lets you capture tasks in a simple text format that has roots in programming comment tags like TODO and FIXME and todo.txt format.

Code Style

// TODO This is a task
// TODO: This is a task
// TODO:5 This is a task
// TODO: A task with a descrption looks like this.
// Every line after the task is part of the description until we find another
// task, a blank comment line, or a line of code
// - A list item
// - Another list item

Hash Style

#TODO: This is a task
#TODO:0 This is a task
#to-do:0 This is a task

#TODO: If you don't want your task to get converted to html in markdown files, put it in a comment.
You can still add descriptive text, but don't forget to leave a blank line
between the description and the comment end tag, or the comment end will become
a part of your description.


Take a look at the source of this You'll probably find a few tasks in comments.

Markdown Style

[This is a task](#todo:)
[This is a task](#todo:10)

Task syntax

  • Code style tasks will only be detected if the list name matches a string in the code.include_lists attribute in .imdone/config.json and the file extension exists in lib/languages.js.
  • List names in code style tasks must match this regular expression ([A-Z]+[A-Z-_]+?).
  • In Hash and markdown style tasks list name can be any combination of upper and lower case letters, underscores and dashes
  • In Hash and markdown style tasks the list name must be followed by a : and a number which determines sort order in the list
    • Sort numbers can be reused, in which case tasks with the same sort number will be sorted alphabetically by text.
  • In code, tasks can be any style but must be in a line or block comment
    • Code style tasks are only detected in comments for files with extensions listed in imdone-core/languages.js or the languages attribute in the .imdone/config.json
  • For code and hash style tasks, the task text is terminated by the end of line
  • Task text can have todo.txt formatting excluding the completion and priority markers.
  • Task text can have markdown formatting

todo.txt syntax examples

Create date

#DOING:20 2015-02-09 This task was created on 2015-02-09

Completed date

#DOING:20 x 2015-02-09 2015-02-08 This task was created on 2015-02-08 and completed on 2015-02-09

Due Date

#doing:20 This task is due on 2015-02-09 due:2015-02-09

Tags (todo.txt projects)

#doing:20 This task has a *madjs* tag +madjs


#doing:20 This task has a *madjs* context @madjs


#doing:20 This task has profile metadata profile:piascikj
Metadata links
  • Tasks with metadata can be linked to external resources like other task mgmt systems and websites
  • Add a meta attribute to .imdone/config.json
  • In this example user:piascikj would link to
  "meta": {
    "user": {
      "urlTemplate": "",
      "titleTemplate": "github profile for %s"