Adhalianna / tracke.rs

A flexible task management tool working as a web application

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

As a user I can use task trackers to organize my tasks into various lists and query within a given tracker so that I do not have to filter and organize them on my own

Adhalianna opened this issue · comments

Acceptance criteria:

  • A single task can belong only to a single tasks tracker at a time. (This is unlike tags - a single task can have multiple or none tags assigned).
  • There must exist for each user a default task tracker that cannot be removed by the user and to which all the tasks without a relation to any other tracker are assigned.
  • All the task trackers have names and can be renamed. The constraints on the names of the trackers should be the same as on the task titles. Both PATCH and PUT requests should be supported for the rename operation.
  • A user can use the API to query, sort and filter tasks within the scope of a single tracker using the same query parameters that can be used to query within the scope of all the user's tasks
  • Task trackers must have a globally unique ID independent of its name that should be used in URLs to identify them as a resource
  • All trackers which are not the default task tracker for a given user can be deleted with a DELETE request which also results in deleting all the tasks belonging to the selected tracker.
  • Attempting to DELETE the default task tracker results in an error with status code 403 ("Forbidden") and a message: "the specified task tracker is considered the default task tracker for the user and as such it cannot be removed".
  • Tasks which are created with no task tracker ID provided belong to the default task tracker. To change the relation a different task tracker ID can be provided during the task update or creation.
  • Filtering the tasks using task trackers should be faster than when tags are used to limit the results. This should be achieved using at least well defined foreign keys on the schemas defining trackers and tasks in the database.