Task Management System

From Adam Colton
Jump to navigation Jump to search

I've worked on a number of these over the years. The current one is pretty good and mostly meets my need. However, I want to rebuild it and add a little more rigor.

Tasks

  • Title
  • Date (null puts it on a backlog) - I've run into a lot of trouble with this in the past, I think I'll store it as an int this time representing days since 8/13/84
  • Points
  • Priority
  • Notes

Automation

Repetition - Only once instance of a task can be active at a time. All other instances appear as 'ghosts'. When a task is completed, the points are given and the active instance gets moved to the next day.

  • After Complete
    • r[n] where n is any integer
    • Repeats n days after the task is completed
  • Weekly Pattern
    • w[(0-6)*] for instance w135 for mon, wed, fri
    • Task will recur on the next weekday matching the pattern
  • Monthly day pattern
    • m[((0-5)(0-6))*] for every two integer set, the first number is the week (0-5) and the second integer is the day of the week
    • m1131 would be the second and fourth monday of a month
  • Monthly Date pattern
    • M[(-/+)01-31*] every signed two integer pair represents a day of the month, if a number is negative, it counts from the end of the month.
    • M+01+15-1 would the 1st, 15th and last day of every month
  • Year Pattern
    • y(((01-12)(01-31))*] the first two integers would be the month, the second two would be the date
    • y011504150815 would be the 15th of January, April and August every year.

Date locking - a locked task cannot change it's date (except on complete/repeat cycle)

Automated Re-balancing, day or all.

One note, I previously supported task dependency spawning (create one task when another was completed), that is going to be handled with projects this time.

Users

  • point-to-minute conversion
  • points per day pattern
  • viewing preferences
  • Project auto-balance default

Timers

  • Title
  • Done

Projects

  • Auto-balance: If true, each task will be added to the 'next fit' date when a stage is activated, if false - they will be added to the current date. If auto-balance is not specifically set for a project, it will default to the user setting.

Projects are a way to group tasks into sets of dependencies. A project is divided into stages, tasks belong to a project-stage.

I should be able to sum up the points in a project and come up with a completed percentage.

All tasks in project not in the current stage will be placed on the backlog (not given a date). As soon as one stage is complete, all the tasks from the next stage will be added, following auto-balance rules.

UI

The first UI I build is going to be plain HTML, just to stub out the functionality. Lauren will build the rest.

API

  • /user/new
    • Operation: creates a new user
    • Required: username, password
    • Returns: userid
  • /user/login
    • Operation: login
    • Required: username, password
    • Returns: userid
  • /task/new
    • Operation: Creates a new task
    • Required: title
    • Optional: date, priority, points, automation
    • Returns: task object (json)
  • /task/update
    • Operation: Updates attributes of a task
    • Required: task id
    • Optional: any task attributes
    • Returns: task object (json)
  • /task/delete
    • Operation: deletes a task
    • Required: task id
    • Returns: confirmation
  • /task/done
    • Operation: Marks a task as done
    • Required: task id
    • Returns: confirmation
  • /timer/new
    • Operation: creates a new timer
    • Required:
    • Optional:
    • Returns:
  • template
    • Operation:
    • Required:
    • Optional:
    • Returns: