easy_task 0.0.4
easy_task: ^0.0.4 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 a user to create groups, user lists, tasks and assign the task to the users of the group, and moderating the workflow.
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 #
taskscollection composit indexescreator: ascandcreatedAt: descis required.project: ascandcreatedAt: descis required.parent: ascandcreatedAt: descis required.completed: ascandcreatedAt: descis required.child: ascandcreatedAt: descis requierd.
Test #
Unit test #
Do the unit test as Flutter does.
Widget test #
Do the widget test as Flutter does.
Task Rules Overview #
-
Any body can be a moderator as long as his uid is set to the
moderatorUsersin the group. -
Any body can create a task.
-
A task may be (or may not be) assigned to a group.
-
A moderator can create user groups
- So, he can quickly add all the users of that group without inviting them indivisually.
- Remember, any one can be an moderator. Meaning, any one can create his own user groups even if he does not have any group.
- The users must accept invitate to be a member of the group.
-
Anyone can assign to anyone as long as they are in the same group.
-
One cannot assign a task to a user who is not in the same group even if it's moderator or a creator. Meaning,
- a task can only be assigned to
- the creator himself
- anyone in the group
- a task can only be assigned to
-
Anyone can create a group.
- Only the group creator or moderator can update the group itself.
- Only creator or moderator can invite users to the group.
- Anyonce in the group can create tasks. And the task automatically belongs to the group.
-
One task can be assigned to multiple users
Database Strucuture #
Task Database Structure #
-
taskis the collection. All the work items goes in this collection. -
Anyone in the group can edit task even if it is not created by himself.
-
assignedUsersis the list of users who are assigned to the task.- App can filter tasks by searching this field instead of searching the whole
task-assignedcollection.
- App can filter tasks by searching this field instead of searching the whole
-
title -
content -
createdAt -
updatedAt -
scheduledAt- Not supported, yet. If the field has value (date time), then the task will be disabled until the schedule time. -
deadlineAt- Not supported, yet. If the field has value (date time), then the task is considered as closed if the deadlien has passed. -
status- It's the stauts of the task. It can be one ofopen,closed.- the default is
open - If it's closed, no one can edit the task and all the assinees cannot do their job. Meaning the task is freezed and assignees are not allow to work on it.
- the default is
-
The review comments are not supported at this time. But if there must a review comments feature, then the comments must belong to a task.
Logic #
-
Sign-inis required before using any of the widget or logic of the package. This package does not provide anything for user authentication. You can develop your own.- See
phone_sign_inpackage for sign-in that is built by the same developer of this package.
- See
-
Taskis a work. -
Each task has fields like below;
project: boolto know if it's a project or a task.child: boolto know if it has a parent or not. If it's true, it belong to a project.
-
Projectis a task with a special purpose. It hasproject: true, while task hasproject: false. Think about it as a comment thread,A task can have children tasks. And the task that has children is calledProject.- The
Projectinformation is saved as a task document, for the management purpose. So, in the list view, it will be listed together with otehr tasks. - Project can have many child tasks. Remember, Projects and tasks are saved in same
taskscollection.
- The
-
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: trueare not dispolayed. -
Group taskis displayed together with other tasks in the same task list view.- Group task has no check box.
- When the gropu task is clicked, it will display the details of it.
-
User invitation is done by
easyuser. -
Comment under each task is used by
easy_commentpackage.
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 #
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 ofnot completednumber.rootLevelTasks: It displays the no of the root level tasks. It is simpley the combination ofproject: false andchild: false.