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 #
tasks
collection composit indexescreator: asc
andcreatedAt: desc
is required.project: asc
andcreatedAt: desc
is required.parent: asc
andcreatedAt: desc
is required.completed: asc
andcreatedAt: desc
is required.child: asc
andcreatedAt: desc
is 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
moderatorUsers
in 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 #
-
task
is 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.
-
assignedUsers
is the list of users who are assigned to the task.- App can filter tasks by searching this field instead of searching the whole
task-assigned
collection.
- 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-in
is 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_in
package for sign-in that is built by the same developer of this package.
- See
-
Task
is a work. -
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 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
Project
information 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
tasks
collection.
- 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: true
are not dispolayed. -
Group task
is 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_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 #
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 completed
number.rootLevelTasks
: It displays the no of the root level tasks. It is simpley the combination ofproject
: false andchild
: false.