toodles: Manage the TODO entries in your code

[ library, mit, program, project-management ] [ Propose Tags ]

See the README on GitHub at

[Skip to Readme]
Versions [faq],,,,,,,,,,,,,,,,, 0.1.1, 0.1.2, 0.1.3, 0.1.4, 1.0.0, 1.0.1, 1.0.2, 1.0.3, 1.1.0, 1.1.1, 1.2.1
Dependencies aeson, base (>=4.7 && <5), blaze-html, bytestring, cmdargs, directory, filepath, http-types, megaparsec, MissingH, regex-posix, servant, servant-blaze, servant-server, strict, text, transformers, wai, warp, yaml [details]
License MIT
Copyright 2018 Avi Press
Author Avi Press
Category Project Management
Home page
Bug tracker
Source repo head: git clone
Uploaded by aviaviavi at Tue Oct 16 17:04:49 UTC 2018
Distributions NixOS:1.2.1
Executables toodles
Downloads 2391 total (286 in the last 30 days)
Rating (no votes yet) [estimated by rule of succession]
Your Rating
  • λ
  • λ
  • λ
Status Hackage Matrix CI
Docs not available [build log]
All reported builds failed as of 2018-10-16 [all 3 reports]


Maintainer's Corner

For package maintainers and hackage trustees

Readme for toodles-

[back to package description]


Build Status Hackage

Toodles scrapes your entire repository for TODO entries and organizes them so you can manage your project directly from the code. View, filter, sort, and edit your TODO's with an easy to use web application. When you make changes via toodles, the edits will be applied directly the TODO entries in your code. When you're done, commit and push your changes to share them with your team!

Toodles Screenshot

TODO details

Specify details about your TODO's so that you can filter and sort them with ease! Specify details within parenthasis and separate with the | delimeter.

# TODO(assignee|p=1|keys=vals|#tags) 


The key p=<integer> will be interpreted as a priority number


Use arbitrary key value pairs <key>=<value>|<key2>=<value2>|... and design any organization scheme you wish! A good use for this is to enter dates of deadlines for TODO's that you can sort on in Toodles


A detail starting with #, eg #bug|#techdebt|#database|... will be interpreted as a tag, which can be used to label and group your TODO's.


Assign your TODO's to someone. Any plain word that will be interpreted as an assignee.

# TODO(bob) - something we need to do later

Per Project Configuration

You can configure toodles by putting a .toodles.yaml file in the root of your project. See this repo's .toodles.yaml for the full configuration spec.

Currently via config you can:

  • Set files to ignore via a list of regular expressions

Scanned Languages

Submit a PR if you'd like a language to be added. There will eventually be support for this to be user configurable

  • C/C++
  • Elixir
  • Erlang
  • Go
  • Haskell
  • Java
  • Javascript
  • Objective-C
  • Protobuf
  • Python
  • Ruby
  • Rust
  • Scala
  • Shell / Bash
  • Swift
  • Typescript
  • Yaml


You can get toodles by installing with stack or cabal. Run stack install toodles or cabal install toodles and you're done! If there is desire for it I can look into precompiled distribution.


Invoking toodles with no arguments will treat the current directory as the project root and will start a server on port 9001. You can set these with the -d and -p flags, respectively.

# $ toodles -d <root directory of your project> -p <port to run server>
# for more info run:
# $ toodles --help
$ toodles -d /path/to/your/project -p 9001
# or simply
$ toodles

Current Limitations

Due to the parser's current simplicity, Toodles won't see TODO's in multiline initiated comment. For instance in javascript

// TODO(#bug) this would be parsed


 TODO(#bug) this will _not_ be picked up by toodles