DGA TODO App User Guide

Introduction

I have been a list user for a long time, for both personal and professional purposes. From pen and paper, to electronic files, to various computer applications, I reached a point where my problem was too many individual lists and saw the opportunity to develop my own application to meet my specific needs. This page serves as a user guide to the DGA TODO App.

Technology

The DGA TODO App is web-based and accessible from any modern browser, however, the user interface is not designed for a small screen device. The application is written in PHP and uses a MySQL database, and must be hosted on a server that provides those services.

Context

In general, the application manages notes in a database and presents to the user a filtered list of notes. I have been using the application since 2023 and as of this writing I have 258 notes, most of which are TODOs but I have also found the application useful for remembering things.

Categories

The application allows the user to define a hierarchy of categories with which to organize his notes. For example, I defined the following top level categories that reflect how I organize my notes.

  • * Personal
  • AimeĆ©
  • Cabin
  • Garden
  • Guanajuato
  • House

A category can have tasks and also subcategories. For example, introducing the slash notation, my subcategories for garden are:

  • /Garden /Design
  • /Garden /Huerta
  • /Garden /Maintenance
  • /Garden /Pruning
  • /Garden /Roses
  • /Garden /Shopping
  • /Garden /Weeding

Categories and the hierarchy are user defined and easily modified. Categories help the user organize his notes and filter the view of tasks in the application user interface.

Tasks

A task has the following attributes:

  • description – free text field, i.e., the note
  • category – a task must assigned to a category
  • done flag – besides the obvious connotation, affects the filtering and presentation of tasks
  • today flag – indicates that the task will be shown on the default view, which is the list of tasks for today (more semantics to follow)
  • date – a task can have a optional date (more semantics to follow)
  • protected flag – when set the task cannot be deleted directly; it must be first modified to clear this flag

User Interface

The main application page displays all tasks that match the filter criteria, listed by categories and subcategories in alphabetical order. Note that prefixes can be used to control alphabetical ordering. For example, my category “* Personal” always appears first because of the star prefix. If a category does not have any tasks that match the filter then it will be suppressed.

The goal of the filter is to enable the user to quickly review only the tasks of interest at the moment. Normally I just want to see the list of tasks that are marked for today. Additional filter criteria can always be used to focus the view. For example, quick links to top level categories are provided at the top the the main page. Removing filter criteria will expand the view.

There are ancillary pages to define, modify, and delete tasks and categories.

Task Filters

The current task filter criteria appear at the top of the main application page, beneath the top level category shortcuts. The filter options are:

  • Category – a drop-down to select a specific category or subcategory
  • Done – a drop-down to show only tasks with the done flag set or unset or either
  • Today – to show only tasks with the today flag set
  • Tomorrow – used to force the scheduler to run for the next day (see scheduler below)
  • Task Search – text substring search on task description
  • Start Date – to show only tasks with a date >= specified date
  • End Date – to show only tasks with a date <= specified date

The New category button appears before the category filter drop-down.

Scheduler

The application has a very simple scheduler that is run the first time the application is accessed on any particular day.

  • The scheduler sets the today flag on all tasks that are not marked done and have a date <= today’s date.

This mechanism allows the user to schedule a task into the future and have it appear on the today list on the specified date. Note that this does not have to be the actual day of a task; it could be one week earlier for example.

A task can be removed from the today list by clearing the today flag. However, it will be reinstated by the scheduler unless:

  • it is marked done, or
  • it is rescheduled into the future, or
  • it is unscheduled, or
  • it is deleted

Task Display

The main application page displays all tasks that match the filter criteria grouped by category. The tasks appear in the following order.

  • tasks with the today flag set, followed by tasks without
  • within the above grouping, tasks without the done flag set, followed by tasks with
  • within the above groupings, tasks are ordered by increasing date
  • finally, within the above groupings, tasks appear alphabetically and prefixes can be used to control alphabetical ordering

At the beginning of each task line are buttons to Edit and Delete a task. The task data shown can be modified directly and the task updated with the Update button. Updating a task will refresh the whole page.

Note that the list of tasks is scrollable when there is more to display than the screen area allows.

Category Header

In the task display, the list of filtered tasks for a category appear under a category header line. At the beginning of the category line are buttons to Edit and Delete the category. A category can only be deleted when it does not have any tasks or subcategories. There is also a new Task button which invokes the add task page. The category name is a shortcut link to show only that category.

Application Security

The application uses a simple password and cookie security mechanism. If a valid cookie is not found then the user must enter his password to access the application. The cookie is updated every time the application is accessed but will expire after seven days of inactivity.

Usage Tips

  • Use the application to record ideas when they occur so they don’t slip away.
  • Use the application to plan projects.
  • Use the today flag to indicate immediate priorities.
  • Normally I delete a task after dealing with it, however, the done flag is useful when I want to remember the note, and perhaps the done date.
  • Use text prefixes and dates to order tasks.
  • Every once in a while, review all your tasks by category to confirm your planning.
  • Use the task search filter to find notes.
  • Use the application for periodic tasks. Reschedule the task for the next period after dealing with it.
  • Use the application as much as possible because consolidation is a benefit.

updated 2025/01/31