# Jonathan Bernard's Getting Things Done implementation. This is my adaptation of the Getting Things Done system by David Allen. There are a lot of tools that adapt his system for various digital platforms, but most of them move away from the folder-based system he created. They try to create new systems based on the core principles of the method outlined in [*Getting Things Done*][book], but I was unable to find a system that followed the details of his method. I do not think there is anything wrong with reimagining the system based on the core principles. David Allen advocates that in the book himself. Still, I was very attracted to the folder-based implementation that he descibes; I only wanted to use digital folders and files instead of physical folders and pages. ## History and Motivation My method initially started as a simple collection of folders, intended to mirror the physical system. As I used this I noticed some common use patterns that would benefit from an automated tool. In particular, I wanted to have the system walk my through the *process* phase. It was too easy for me to forget some of the important principles of this phase: immediately doing anything that could be done in 5 minutes or less, identifying the next action for an item, and sorting the action correctly. Out of this the [command-line tool][cli] was born. As I started using the system for everything I started desiring to have some way to publish my plans (or at least some contexts of my plans, like work). This lead me to implement a [REST API][servlet] that interfaced with the repository (still just files) so that I could easily embed this information in a web page, or allow controlled access to the system from a client application. ## How It Works *TODO* ## Code Index ### com.jdblabs.gtd [Item](http://jdbernard.github.io/gtd/doc/src/main/com/jdblabs/gtd/Item.groovy.html) : One item in the GTD system (a *next action* for example). This class is a wrapper around the File to make it easier to work programatically with GTD items. [PropertyHelp](http://jdbernard.github.io/gtd/doc/src/main/com/jdblabs/gtd/PropertyHelp.groovy.html) : Simple serialization support for item properties. Used to read and write properties from an item file. [Util](http://jdbernard.github.io/gtd/doc/src/main/com/jdblabs/gtd/Util.groovy.html) : Utility methods common to this implementation of the Getting Things Done method. ### com.jdblabs.gtd.cli [GTDCLI][cli] : Command-line interface to the GTD repository. The repository organization is intended to be simple enough that standard UNIX command-line tools are sufficient, but it is useful to add some specific commands to walk you through the processing phase or manage duplicated entries (when tracking an item in a next-actions context and a project folder, for example). ### com.jdblabs.gts.servlet [GTDServlet][servlet] : Standard Java servlet to expose the repository via [book]: https://secure.davidco.com/store/catalog/GETTING-THINGS-DONE-PAPERBACK-p-16175.php [cli]: http://jdbernard.github.io/gtd/doc/src/main/com/jdblabs/gtd/cli/GTDCLI.groovy.html [servlet]: http://jdbernard.github.io/gtd/doc/src/main/com/jdblabs/gtd/servlet/GTDServlet.groovy.html