Task Management System

From Adam Colton
Revision as of 14:28, 26 August 2013 by Adamcolton (talk | contribs) (→Tasks)
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

This gets a little sticky.

Repeat pattern - could be days of the week (mon & wed), days of the month (15th, third monday), once a year or every n days. This brings in the complication of instance vs series and how to store that information.

Repeat Every

  • day pattern (monday or wed, 15th, third monday)

Due vs Spawn. Sometimes you want to do something on a day, other times you want to spawn a task on a day

Date locking

Automated Re-balancing, day or all.

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: