easy_task 0.0.8 copy "easy_task: ^0.0.8" to clipboard
easy_task: ^0.0.8 copied to clipboard

A complete and easy to use task management system from the personal tasks to school and office works

Easy Task #

This package is a todo like task manage system which allows users to create tasks and groups.

Terms #

  • Root level tasks: These are tasks that do not belong to any projects. They are used by the logged-in user when they want to keep tasks for themselves only. Not sharing with others.

Installation #

Firestore Indexes #

  • tasks collection composit indexes
    • creator: asc and createdAt: desc is required.
    • project: asc and createdAt: desc is required.
    • parent: asc and createdAt: desc is required.
    • completed: asc and createdAt: desc is required.
    • child: asc and createdAt: desc is requierd.

Database Strucuture #

Task document #

  • tasks is the collection. All the tasks (work items) goes in this collection.

  • See the comment of the Task model class that has more details of each fields.

Logic #

  • Any body can create a task.

  • A task can be

    • a task or
    • a project.
  • When a task is being created, the user can choose it to be a project.

    • A root level task can be turned into a project.
    • But a project can not be turned into a task.
  • A task may be (or may not be) assigned to a project.

  • Task that is not assigned to a project is called root level task.

  • Sign-in is required before using or accessing the task management system.

    • Anonymous login is okay.
    • This package does not provide anything for user authentication. You can develop your own.
    • See phone_sign_in package for sign-in that is built by the same developer of this package.
  • Task is a work that can be managed and tracked.

    • It has priority. (NOT SUPPORTED, YET)
    • It may have due date. (NOT SUPPORTED, YET)
      • If the due date passes of an incomplete task, the task is highlighted and the tasks will be listed in Over due menu.
    • But it does not have any repeat.
      • It may have 'auto generate task every day/week/month/year' feature in the feature, but the task must not repeat.
  • Each task has fields like below;

    • project: bool to know if it's a project or a task.
    • child: bool to know if it has a parent or not. If it's true, it belong to a project.
  • Project is a task with a special purpose. It has project: true, while task has project: false. Think about it as a comment thread, A task can have children tasks. And the task that has children is called Project.

    • The Project information is saved as a task document, for the management purpose. So, in the list view, it will be listed together with other tasks.
    • Project can have many child tasks. Remember, Projects and tasks are saved in same tasks collection.
  • A task can be assigned to other user (NOT supported, yet)

  • A task can be moved to a project, and vice versa. ~~~~~

  • In the list view, children tasks with child: true are not displayed.

  • Group task is displayed together with other tasks in the same task list view.

    • Group task has no check box.
    • When the group task is clicked, it will display the details of it.
  • User invitation is done by easyuser.

  • Comment under each task is used by easy_comment package.

flowchart TD
Task_List-->Task_Create-->Task_Detail-->Task_Update-->Task_List
Task_List-->Task_Detail
Task_List-->Project_Detail
Task_Detail-->Task_List
Task_List-->Menu-->User_Group_List
User_Group_List-->Create_User_Group
User_Group_List-->View_User_Group-->Invite_Users_1
Project_Detail-->Project_Detail_Menu-->Invite_User_2
Project_Detail_Menu-->Invite_User_Group

Widgets #

Task List Screen #

  • TaskService.instance.showTaskListScreen: Call this method to show the tasks of the user. This method will show TaskListScreen. For custom design, simply copy the TaskListScreen and edit it on your own.

TaskCount #

Displaying number of tasks

  • By default, it will display all the tasks under task collection including parent and child tasks, and projects.
  • The params below can be combined
    • all: If this is set to true, it will only display no of tasks including parent and child tasks. Actually, all the document under the tasks will be returned.
    • child: If this is set to true, it will only display the no of child.
    • project: If this is set to true, it will display the no of project only. If it is false, only the no of tasks that are not project will be displayed.
    • completed: if this is true, only the no of completed tasks are displayed. If it is false, then it will display the no of not completed number.
    • rootLevelTasks: It displays the no of the root level tasks. It is simpley the combination of project: false and child: false.

Custom UI Design #

To do custom UI design, you need to understand how easy_task works.

Known Issues #