Adding a GTD Tasks Module

Posted by Sam Ciaramilaro on March Mon, 2015

I'd like to add a GTD tasks management module to the website, so I'm going to start with scoping out the requirements. At first, it will just be a module within the admin backend accessible only to myself, so I won't have to worry about authentication or managing other users. However, I'll construct it in a way that can be used in an app that allows for multiple users.

GTD Methodology

The system I will build will be based on the GTD methodology, but tailored to fit the needs of a typical knowledge worker (i.e.. office worker). Personally, I don't think contexts such as "phone" or "email' or "web" really make sense any more given the fact that we have access to these things around the clock.

Instead, contexts such as Locations and Times Periods seem much more relevant. For example, most people can categories 95% of their locational contexts by either "At Home" or "At Work". Likewise for time periods. Most will fall into two buckets; Business Hours, and Off Hours. But the most important categorization will remain the task lists itself, or Project Name. The task list, in conjunction with either a location or time context, work well for most people, and cover about 95% of all needs.

So, to start with, the primary methods for task categorization will be as follows:

  • Task List, or Project

The key contexts used for categorization will be:

  • Location
  • Time Period

Other filter mechanisms

  • Priority
  • Next actions
  • Time effort
  • Due Date
  • Tags

App Structure

To start with, below is a list of entities I see involved:

  • User
  • Task
  • List, or Project
  • Context
  • Tag
  • Location
  • Workflow

Task Features and Workflow Ideas (may not be implemented in initial version):

  • Create Subtasks (create subtasks from any task
  • Assign workflows (see next section)

Task Workflows

The purpose of Task Workflows is to assign predefined set of actions to common tasks without having for create a individual project for them. Typically involve a handful of subtasks to complete.

  • Research
    Purpose of the task is to research a subject(s) in order to reach a decision or course of action. Can possibly involve subtasks.
  • Issue Investigation:
    Typically in response to an incoming email or other form of communication. Typically takes time to confirm the issue, investigate the cause, correct the issue, and revert back. with resolution.
  • Incoming Request
    Typically received via an incoming email or other form of communication. May take time to clarify the request, plan and fulfill the request, and revert back with resolution.


Tasks should be filterable by the following:

  • Task List / Project
  • Context (Location, Time Window, Other)
  • Start Date/Due Date
  • Tags
  • Required Effort
    (fx. a task may need 5-10 minutes, half an hour, or over an hour to complete. Filtering by time needed would be helpful when you only have about 20 free minutes to work on something. You wouldn't want to get involved in a task that you know will take an hour.)

So, the above is a good starting point. I'll be giving this some more thought and will flesh out the remaining details by drill down into the technical specifics.