+**:information_source: Notes** are there to give you extra information about SWEe-book's features.
+
+
+![UiExplanation](images/UIDesign.png)
+
+* **Command Input Box**: Type your commands here!
+
+* **Message Box**: Displays the details of the result of your commands or error messages.
-**:information_source: Notes about the command format:**
+* **Contact List**: Displays your list of group mates and their relevant information.
-* Words in `UPPER_CASE` are the parameters to be supplied by the user.
- e.g. in `add n/NAME`, `NAME` is a parameter which can be used as `add n/John Doe`.
+* **Task List**: Displays your tasks.
-* Items in square brackets are optional.
- e.g `n/NAME [t/TAG]` can be used as `n/John Doe t/friend` or as `n/John Doe`.
+--------------------------------------------------------------------------------------------------------------------
+
-* Items with `…` after them can be used multiple times including zero times.
- e.g. `[t/TAG]…` can be used as ` ` (i.e. 0 times), `t/friend`, `t/friend t/family` etc.
+## Glossary
-* Parameters can be in any order.
- e.g. if the command specifies `n/NAME p/PHONE_NUMBER`, `p/PHONE_NUMBER n/NAME` is also acceptable.
+* **GUI** is short-form for Graphical User Interface, which refers to what the user sees as a graphic. In SWEe-book, the GUI refers to the contact and task lists as shown in the red box below.
+
+![GUI](images/UserGuideGUIRedBox.png)
-* If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
- e.g. if you specify `p/12341234 p/56785678`, only `p/56785678` will be taken.
+
-* Extraneous parameters for commands that do not take in parameters (such as `help`, `list`, `exit` and `clear`) will be ignored.
- e.g. if the command specifies `help 123`, it will be interpreted as `help`.
+* **CLI** is short-form for Command Line Interface, it is what the user types commands into to query or add information into SWEe-book. It refers to the box at the top which users type into (also known as the command box) and the box directly below it which shows feedback based on what command was typed. They are shown in the coloured boxes below.
+
+![CLI and Command Box](images/UserGuideCLIRedBox.png)
-
+:exclamation: **Caution:**
+If your changes to the data file makes its format invalid, SWEe-book will discard all data and start with an empty data file at the next run.
+
-Shows a list of all persons in the address book.
+#### Saving the data
-Format: `list`
+SWEe-book data are saved in the hard disk automatically after any command that changes the data. You do not need to save manually.
-### Editing a person : `edit`
+### Contact Management Features
-Edits an existing person in the address book.
+#### Adding a person: `add`
-Format: `edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…`
+Adds a person to SWEe-book.
-* Edits the person at the specified `INDEX`. The index refers to the index number shown in the displayed person list. The index **must be a positive integer** 1, 2, 3, …
-* At least one of the optional fields must be provided.
-* Existing values will be updated to the input values.
-* When editing tags, the existing tags of the person will be removed i.e adding of tags is not cumulative.
-* You can remove all the person’s tags by typing `t/` without
- specifying any tags after it.
+Format: `add n/NAME g/GROUP1 [g/GROUP2] p/PHONE_NUMBER e/EMAIL tg/TELEGRAM_USERNAME gh/GITHUB_USERNAME`
+
+:bulb: **Tip:**
+You can optionally prepend usernames with '@'. SWEe-book takes care of it!
+(i.e. `@johndoe` and `johndoe` are equivalent as they will both be parsed into the username `johndoe`)
+
Examples:
-* `edit 1 p/91234567 e/johndoe@example.com` Edits the phone number and email address of the 1st person to be `91234567` and `johndoe@example.com` respectively.
-* `edit 2 n/Betsy Crower t/` Edits the name of the 2nd person to be `Betsy Crower` and clears all existing tags.
+* `add n/John Doe g/CS2103T p/98765432 e/johnd@example.com tg/@johndoe gh/johndoe`
+ * Adds a contact with name `John Doe`, group `CS2103T`, phone number `98765432`, email `johnd@example.com`, telegram username `johndoe`, github username `johndoe`
+* `add n/Betsy Crowe p/92221234 g/CS2103T g/CS2101 e/betsycrowe@example.com tg/betsyyy gh/crowebetsy`
+ * Adds a contact with name `Betsy Crowe`, group `CS2103T` **and** `CS2101`, phone number `92221234 `, email `betsycrowe@example.com`, telegram username `betsyyy`, github username `crowebetsy`
+
+#### Listing all persons : `list`
-### Locating persons by name: `find`
+Shows a list of all persons in SWEe-book.
+
+Format: `list`
+
+:exclamation: **Caution:**
-If your changes to the data file makes its format invalid, AddressBook will discard all data and start with an empty data file at the next run.
+* `addTask d/Presentation 1 g/CS2101 type/deadline date/2020-11-02 pty/high`
+ * Add a non-recurring `deadline` due on `2020-11-02`
+ with `high` priority and task description `Presentation 1`to the group `CS2101`
+
+![result for 'addTask d/Presentation 1 g/CS2101 type/deadline date/2020-11-02 pty/high'](images/addTaskExample2.PNG)
+
+* `addTask d/Mock QnA 1 g/CS2101 type/event date/2020-10-02 recurring/month`
+ * Add a `event` that recurs every `month` with
+ date `2020-10-02` and default `med` priority and task description `Mock QnA` to the group `CS2101`
+
+![result for 'addTask d/Mock QnA 1 g/CS2101 type/event date/2020-10-02 recurring/month'](images/addTaskExample3.PNG)
+
+
+
+#### Editing a task: `editTask`
+
+Edits an existing task in the task list.
+
+Format: `editTask INDEX [d/DESCRIPTION] [g/GROUP] [type/TYPE] [date/DATE] [pty/PRIORITY] [recurring/RECURRING_FREQUENCY]`
+* Edits the task at the specified `INDEX`. The index refers to the index number shown in the displayed task list. The index **must be a positive integer** 1, 2, 3, ...
+* At least one of the optional fields must be provided.
+* Existing values will be updated to the input values.
+* To set a recurring task to be non-recurring, you can specify `recurring/none` as one of the arguments.
+
+
:bulb: **Tip:**
+Please specify a date if you are changing a todo with no associated date into a deadline/event or recurring task!
-### Archiving data files `[coming in v2.0]`
+Examples:
+* `editTask 1 d/OP2 rehearsal g/CS2101 type/Event date/2021-11-11`
+ * Edits the description, group, type of task, date of the first task in the task list to be
+ `OP2 rehearsal`, `CS2101`, `Event` and`2021-11-11` respectively.
+ ![result for 'editTask 1 d/OP2 rehearsal g/CS2101 type/Event date/2021-11-11'](images/EditTaskExample1.PNG)
+
+
+
+#### Deleting a task: `deleteTask`
+
+Format: `deleteTask INDEX`
+
+Deletes the task at the specified `INDEX`.
+* The index refers to the index number shown in the displayed task list.
+* The index **must be a positive integer** 1, 2, 3, …
+
+Examples:
+* `deleteTask 1`
+ * Deletes the 1st task in the task list.
+
+#### Marking a task as done: `doneTask`
-_Details coming soon ..._
+Format: `doneTask INDEX`
+
+Marks the task at the specified `INDEX` as done.
+* The index refers to the index number shown in the displayed task list.
+* The index **must be a positive integer** 1, 2, 3, …
+* The task must not have been marked as done before.
+
+Examples:
+* `doneTask 1`
+ * Marks the 1st task in the task list as done.
+
+![result for 'doneTask 1'](images/doneTaskCommandExample.png)
+
+
+
+#### Sorting tasks: `sortTasks`
+Sort tasks based on their descriptions, groups, priorities or deadlines / event dates.
+
+Format: `sortTasks param/PARAMETER o/ORDER`
+* The sort is case-**in**sensitive. e.g. CS2103T will be lexicographically identical to cs2103t, but cs2101 still comes before CS2103T.
+* `PARAMETER` includes `desc` (for description), `date` (for a deadline / date of event), `pty` (for priority) and `group`.
+* `ORDER` includes `a` for ascending order (0-9 and A-Z, oldest to newest, lowest to highest priority) and `d` for descending order(Z-A and 9-0, newest to oldest, highest to lowest priority)
+* When the tasks are sorted by `date`, date-less `Todo` tasks will always be at the bottom of the list.
+
+Examples:
+* `sortTasks param/pty o/a`
+ * Sorts the task list by priority, with the low-priority tasks at the top and high-priority tasks at the bottom
+* `sortTasks param/group o/a`
+ * Sorts the task list by group, with CS2101 tasks at the top and CS2103T tasks at the bottom
+* `sortTasks param/desc o/d`
+ * Sorts the task list by description, with the tasks that has description which starts with "Z" at the top, then "Y", and so on.
+* `sortTasks param/date o/a`
+ * Sorts the task list in chronological order (in terms of their deadlines / event dates)
+* `sortTasks param/date o/d`
+ * Sorts the task list in reverse chronological order (in terms of their deadlines / event dates)
+
+![result for 'sortTasks param/date o/a' and 'sortTasks param/date o/a'](images/SortTasksScreenshot.png)
+
+
+
+#### Filtering tasks by modules: `filterTasks`
+Filter tasks based on a criterion
+
+Format: `filterTasks FILTER_CRITERION`
+* Filters the task by the specified `FILTER_CRITERION`
+* `FILTER_CRITERION` refers to either `g/GROUP`, `date/DATE`, `type/TASKTYPE`, `d/DESCRIPTION` or `pty/PRIORITY`
+* FilterTasks only accepts 1 `FILTER_CRITERION` and not more.
+* Tasks corresponding to the criterion specified will be shown
+
+Examples:
+* `filterTasks g/CS2101`
+ * Shows all the tasks related to CS2101 group
+* `filterTasks date/2021-11-21`
+ * Shows all the tasks with the date of 21 Nov 2021
+
+![result for 'filterTasks g/CS2101' and 'filterTasks date/2021-11-21'](images/FilterTasksScreenshot.png)
+
+
+
+#### Listing all tasks: `listTasks`
+Shows a list of all tasks in SWEe-book.
+
+Format: `listTasks`
+* Lists all tasks, resetting any sorting and filtering done by you previously
+
+Examples:
+* `listTasks`
+ * Displays all tasks in right half of the GUI
--------------------------------------------------------------------------------------------------------------------
## FAQ
**Q**: How do I transfer my data to another Computer?
-**A**: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous AddressBook home folder.
+**A**: You can install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous SWEe-book home folder.
+
+**Q**: How do I install Java 11 on my computer?
+**A**: You can install Java 11 by downloading it [here](https://www.oracle.com/sg/java/technologies/javase/jdk11-archive-downloads.html).
+
+**Q**: How can I ensure that Java 11 has been installed on my computer?
+**A**: Open up your terminal and key in `java --version`. You can then see the java version that has been installed. An output of "java 11" means that java 11 has been successfully installed.
+
+**Q**: Can I sync my contacts and tasks with other devices?
+**A**: Unfortunately, you cannot sync them at the moment. However, please look out for future updates.
--------------------------------------------------------------------------------------------------------------------
## Command summary
+Here, you can view the summary of general, contact management, and task management commands.
+
+### General Commands
+
+Action | Format, Examples
+--------|------------------
+**Help** | `help`
+**Exit** | `exit`
+
+
+
+### Contact Management Commands
Action | Format, Examples
--------|------------------
-**Add** | `add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [t/TAG]…`
e.g., `add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague`
+**Add** | `add n/NAME g/GROUP1 [g/GROUP2] p/PHONE_NUMBER e/EMAIL tg/TELEGRAM_USERNAME gh/GITHUB_USERNAME`
e.g., `add n/John Doe g/CS2103T p/98765432 e/johnd@example.com tg/@johndoe gh/johndoe`
**Clear** | `clear`
**Delete** | `delete INDEX`
e.g., `delete 3`
-**Edit** | `edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]…`
e.g.,`edit 2 n/James Lee e/jameslee@example.com`
+**Edit** | `edit INDEX [n/NAME] [g/GROUP1] [g/GROUP2] [p/PHONE] [e/EMAIL] [tg/TELEGRAM] [gh/GITHUB]`
e.g.,`edit 2 n/James Lee e/jameslee@example.com`
**Find** | `find KEYWORD [MORE_KEYWORDS]`
e.g., `find James Jake`
+**Group** | `group GROUP`
e.g., `group CS2103T`
**List** | `list`
-**Help** | `help`
+
+
+
+### Task Management Commands
+
+Action | Format, Examples
+--------|------------------
+**Add Task** | `addTask d/DESCRIPTION g/GROUP type/TYPE [date/DATE] [pty/PRIORITY] [recurring/RECURRING_FREQUENCY]`
(do note that `DATE` is only optional for `Todo` tasks)
+**Edit Task** | `editTask INDEX [d/DESCRIPTION] [g/GROUP] [type/TYPE] [date/DATE] [pty/PRIORITY] [recurring/RECURRING_FREQUENCY]`
+**Delete Task** | `deleteTask INDEX`
+**Done Task** | `doneTask INDEX`
+**Sort Tasks** | `sortTasks p/PARAMETER o/ORDER`
e.g., `sortTasks p/desc o/1`
+**Filter Tasks** | `filterTasks FILTER_CRITERION`
e.g., `filterTasks g/CS2101`
+**List Tasks** | `listTasks`
diff --git a/docs/_config.yml b/docs/_config.yml
index 6bd245d8f4e..b65d5a9b0cc 100644
--- a/docs/_config.yml
+++ b/docs/_config.yml
@@ -1,5 +1,5 @@
-title: "AB-3"
-theme: minima
+title: "SWEe-book"
+theme: jekyll-theme-slate
header_pages:
- UserGuide.md
@@ -8,7 +8,7 @@ header_pages:
markdown: kramdown
-repository: "se-edu/addressbook-level3"
+repository: "AY2122S1-CS2103T-W12-2/tp"
github_icon: "images/github-icon.png"
plugins:
diff --git a/docs/_sass/minima/_base.scss b/docs/_sass/minima/_base.scss
index 0d3f6e80ced..9feaf8f3fb3 100644
--- a/docs/_sass/minima/_base.scss
+++ b/docs/_sass/minima/_base.scss
@@ -288,7 +288,7 @@ table {
text-align: center;
}
.site-header:before {
- content: "AB-3";
+ content: "SWEe-book";
font-size: 32px;
}
}
diff --git a/docs/diagrams/AddTaskSequenceDiagram.puml b/docs/diagrams/AddTaskSequenceDiagram.puml
new file mode 100644
index 00000000000..4adb48dce13
--- /dev/null
+++ b/docs/diagrams/AddTaskSequenceDiagram.puml
@@ -0,0 +1,69 @@
+@startuml
+!include style.puml
+
+box Logic LOGIC_COLOR_T1
+participant ":LogicManager" as LogicManager LOGIC_COLOR
+participant ":SweeBookParser" as SweeBookParser LOGIC_COLOR
+participant ":AddTaskCommandParser" as AddTaskCommandParser LOGIC_COLOR
+participant "a:AddTaskCommand" as AddTaskCommand LOGIC_COLOR
+participant ":CommandResult" as CommandResult LOGIC_COLOR
+end box
+
+box Model MODEL_COLOR_T1
+participant ":Model" as Model MODEL_COLOR
+end box
+
+[-> LogicManager : execute("addTask d/project meeting \ng/CS2101 type/event date/2021-10-10")
+activate LogicManager
+
+LogicManager -> SweeBookParser : parseCommand("addTask d/project meeting \ng/CS2101 type/event date/2021-10-10")
+activate SweeBookParser
+
+create AddTaskCommandParser
+SweeBookParser -> AddTaskCommandParser
+activate AddTaskCommandParser
+
+AddTaskCommandParser --> SweeBookParser
+deactivate AddTaskCommandParser
+
+SweeBookParser -> AddTaskCommandParser : parse("d/project meeting g/CS2101 \ntype/event date/2021-10-10")
+activate AddTaskCommandParser
+
+create AddTaskCommand
+AddTaskCommandParser -> AddTaskCommand
+activate AddTaskCommand
+
+AddTaskCommand --> AddTaskCommandParser : a
+deactivate AddTaskCommand
+
+AddTaskCommandParser --> SweeBookParser : a
+deactivate AddTaskCommandParser
+'Hidden arrow to position the destroy marker below the end of the activation bar.
+AddTaskCommandParser -[hidden]-> SweeBookParser
+destroy AddTaskCommandParser
+
+SweeBookParser --> LogicManager : a
+deactivate SweeBookParser
+
+LogicManager -> AddTaskCommand : execute()
+activate AddTaskCommand
+
+AddTaskCommand -> Model : addTask(task)
+activate Model
+
+Model --> AddTaskCommand
+deactivate Model
+
+create CommandResult
+AddTaskCommand -> CommandResult
+activate CommandResult
+
+CommandResult --> AddTaskCommand
+deactivate CommandResult
+
+AddTaskCommand --> LogicManager : result
+deactivate AddTaskCommand
+
+[<--LogicManager
+deactivate LogicManager
+@enduml
diff --git a/docs/diagrams/ArchitectureSequenceDiagramAddTask.puml b/docs/diagrams/ArchitectureSequenceDiagramAddTask.puml
new file mode 100644
index 00000000000..7bf5aa54819
--- /dev/null
+++ b/docs/diagrams/ArchitectureSequenceDiagramAddTask.puml
@@ -0,0 +1,38 @@
+@startuml
+!include style.puml
+
+Actor User as user USER_COLOR
+Participant ":UI" as ui UI_COLOR
+Participant ":Logic" as logic LOGIC_COLOR
+Participant ":Model" as model MODEL_COLOR
+Participant ":Storage" as storage STORAGE_COLOR
+
+user -[USER_COLOR]> ui : "addTask d/project meeting g/CS2101 \ntype/event date/2021-10-10"
+activate ui UI_COLOR
+
+ui -[UI_COLOR]> logic : execute("addTask d/project meeting g/CS2101 \ntype/event date/2021-10-10")
+activate logic LOGIC_COLOR
+
+logic -[LOGIC_COLOR]> model : addTask(task)
+activate model MODEL_COLOR
+
+model -[MODEL_COLOR]-> logic
+deactivate model
+
+logic -[LOGIC_COLOR]> storage : saveTaskRecords(taskRecords)
+activate storage STORAGE_COLOR
+
+storage -[STORAGE_COLOR]> storage : Save to file
+activate storage STORAGE_COLOR_T1
+storage --[STORAGE_COLOR]> storage
+deactivate storage
+
+storage --[STORAGE_COLOR]> logic
+deactivate storage
+
+logic --[LOGIC_COLOR]> ui
+deactivate logic
+
+ui--[UI_COLOR]> user
+deactivate ui
+@enduml
diff --git a/docs/diagrams/DoneTaskCommandActivityDiagram.puml b/docs/diagrams/DoneTaskCommandActivityDiagram.puml
new file mode 100644
index 00000000000..7ac23a615fc
--- /dev/null
+++ b/docs/diagrams/DoneTaskCommandActivityDiagram.puml
@@ -0,0 +1,14 @@
+@startuml
+start
+if () then ([else])
+ :Retrieve task at given index;
+ if () then ([else])
+ :Update task status to done;
+ else ([task already marked as done])
+ :CommandException;
+ endif
+else ([index is invalid])
+ :CommandException;
+endif
+stop
+@enduml
diff --git a/docs/diagrams/DoneTaskSequenceDiagram.puml b/docs/diagrams/DoneTaskSequenceDiagram.puml
new file mode 100644
index 00000000000..057702aa8a6
--- /dev/null
+++ b/docs/diagrams/DoneTaskSequenceDiagram.puml
@@ -0,0 +1,74 @@
+@startuml
+!include style.puml
+
+box Logic LOGIC_COLOR_T1
+participant ":LogicManager" as LogicManager LOGIC_COLOR
+participant ":SweeBookParser" as SweeBookParser LOGIC_COLOR
+participant ":DoneTaskCommandParser" as DoneTaskCommandParser LOGIC_COLOR
+participant ":DoneTaskCommand" as DoneTaskCommand LOGIC_COLOR
+participant ":CommandResult" as CommandResult LOGIC_COLOR
+end box
+
+box Model MODEL_COLOR_T1
+participant ":Model" as Model MODEL_COLOR
+end box
+
+[-> LogicManager : execute("doneTask 1")
+activate LogicManager
+
+LogicManager -> SweeBookParser : parseCommand("doneTask 1")
+activate SweeBookParser
+
+create DoneTaskCommandParser
+SweeBookParser -> DoneTaskCommandParser
+activate DoneTaskCommandParser
+
+DoneTaskCommandParser --> SweeBookParser
+deactivate DoneTaskCommandParser
+
+SweeBookParser -> DoneTaskCommandParser : parse("1")
+activate DoneTaskCommandParser
+
+create DoneTaskCommand
+DoneTaskCommandParser -> DoneTaskCommand : new DoneTaskCommand(1)
+activate DoneTaskCommand
+
+DoneTaskCommand --> DoneTaskCommandParser :
+deactivate DoneTaskCommand
+
+DoneTaskCommandParser --> SweeBookParser :
+deactivate DoneTaskCommandParser
+'Hidden arrow to position the destroy marker below the end of the activation bar.
+DoneTaskCommandParser -[hidden]-> SweeBookParser
+destroy DoneTaskCommandParser
+
+SweeBookParser --> LogicManager :
+deactivate SweeBookParser
+
+LogicManager -> DoneTaskCommand : execute()
+activate DoneTaskCommand
+
+DoneTaskCommand -> Model : getTasks()
+activate Model
+
+Model --> DoneTaskCommand
+
+DoneTaskCommand -> Model : doneTask(task)
+
+Model --> DoneTaskCommand
+
+deactivate Model
+
+create CommandResult
+DoneTaskCommand -> CommandResult
+activate CommandResult
+
+CommandResult --> DoneTaskCommand
+deactivate CommandResult
+
+DoneTaskCommand --> LogicManager :
+deactivate DoneTaskCommand
+
+[<--LogicManager
+deactivate LogicManager
+@enduml
diff --git a/docs/diagrams/EditTaskSequenceDiagram.puml b/docs/diagrams/EditTaskSequenceDiagram.puml
new file mode 100644
index 00000000000..5be65f51443
--- /dev/null
+++ b/docs/diagrams/EditTaskSequenceDiagram.puml
@@ -0,0 +1,88 @@
+@startuml
+!include style.puml
+
+box Logic LOGIC_COLOR_T1
+participant ":LogicManager" as LogicManager LOGIC_COLOR
+participant ":SweeBookParser" as SweeBookParser LOGIC_COLOR
+participant ":EditTaskCommandParser" as EditTaskCommandParser LOGIC_COLOR
+participant ":EditTaskDescriptor" as EditTaskDescriptor LOGIC_COLOR
+participant "command:EditTaskCommand" as EditTaskCommand LOGIC_COLOR
+participant ":CommandResult" as CommandResult LOGIC_COLOR
+end box
+
+box Model MODEL_COLOR_T1
+participant ":Model" as Model MODEL_COLOR
+end box
+
+[-> LogicManager : execute("editTask 1 d/OP2\nrehearsal g/CS2101\ntype/Event date/2021-11-11")
+activate LogicManager
+
+LogicManager -> SweeBookParser : parseCommand("editTask 1 d/OP2\nrehearsal g/CS2101\ntype/Event date/2021-11-11")
+activate SweeBookParser
+
+create EditTaskCommandParser
+SweeBookParser -> EditTaskCommandParser
+activate EditTaskCommandParser
+
+EditTaskCommandParser --> SweeBookParser
+deactivate EditTaskCommandParser
+
+SweeBookParser -> EditTaskCommandParser : parse("1 d/OP2 rehearsal g/CS2101\ntype/Event date/2021-11-11")
+activate EditTaskCommandParser
+
+create EditTaskDescriptor
+EditTaskCommandParser -> EditTaskDescriptor
+activate EditTaskDescriptor
+
+EditTaskDescriptor --> EditTaskCommandParser : descriptor
+deactivate EditTaskDescriptor
+
+create EditTaskCommand
+EditTaskCommandParser -> EditTaskCommand : new EditTaskCommand(index, descriptor)
+activate EditTaskCommand
+
+EditTaskCommand --> EditTaskCommandParser : command
+deactivate EditTaskCommand
+
+EditTaskCommandParser --> SweeBookParser : command
+deactivate EditTaskCommandParser
+'Hidden arrow to position the destroy marker below the end of the activation bar.
+EditTaskCommandParser -[hidden]-> SweeBookParser
+destroy EditTaskCommandParser
+
+SweeBookParser --> LogicManager : command
+deactivate SweeBookParser
+
+LogicManager -> EditTaskCommand : execute()
+activate EditTaskCommand
+
+
+EditTaskCommand -> EditTaskCommand : createEditedTask()
+activate EditTaskCommand
+EditTaskCommand -> EditTaskDescriptor
+activate EditTaskDescriptor
+EditTaskDescriptor --> EditTaskCommand
+deactivate EditTaskDescriptor
+
+EditTaskCommand --> EditTaskCommand : editedTask
+deactivate EditTaskCommand
+
+EditTaskCommand -> Model : setTask(taskToEdit, editedTask)
+activate Model
+
+Model --> EditTaskCommand
+deactivate Model
+
+create CommandResult
+EditTaskCommand -> CommandResult
+activate CommandResult
+
+CommandResult --> EditTaskCommand
+deactivate CommandResult
+
+EditTaskCommand --> LogicManager : result
+deactivate EditTaskCommand
+
+[<--LogicManager
+deactivate LogicManager
+@enduml
diff --git a/docs/diagrams/LogicClassDiagram.puml b/docs/diagrams/LogicClassDiagram.puml
index 6d14b17b361..2bb883ac7b6 100644
--- a/docs/diagrams/LogicClassDiagram.puml
+++ b/docs/diagrams/LogicClassDiagram.puml
@@ -6,7 +6,7 @@ skinparam classBackgroundColor LOGIC_COLOR
package Logic {
-Class AddressBookParser
+Class SweeBookParser
Class XYZCommand
Class CommandResult
Class "{abstract}\nCommand" as Command
@@ -27,8 +27,8 @@ Class HiddenOutside #FFFFFF
HiddenOutside ..> Logic
LogicManager .right.|> Logic
-LogicManager -right->"1" AddressBookParser
-AddressBookParser ..> XYZCommand : creates >
+LogicManager -right->"1" SweeBookParser
+SweeBookParser ..> XYZCommand : creates >
XYZCommand -up-|> Command
LogicManager .left.> Command : executes >
diff --git a/docs/diagrams/ModelClassDiagram.puml b/docs/diagrams/ModelClassDiagram.puml
index 1122257bd9a..859097964b0 100644
--- a/docs/diagrams/ModelClassDiagram.puml
+++ b/docs/diagrams/ModelClassDiagram.puml
@@ -5,50 +5,47 @@ skinparam arrowColor MODEL_COLOR
skinparam classBackgroundColor MODEL_COLOR
Package Model <
>{
-Interface ReadOnlyAddressBook <>
-Interface ReadOnlyUserPrefs <>
Interface Model <>
-Class AddressBook
-Class ReadOnlyAddressBook
-Class Model
+Interface ReadOnlyUserPrefs <>
+Interface ReadOnlyContactList <>
+Interface ReadOnlyTaskRecords <>
+
Class ModelManager
Class UserPrefs
-Class ReadOnlyUserPrefs
-
+Class ContactList
+Class TaskRecords
Class UniquePersonList
Class Person
-Class Address
-Class Email
-Class Name
-Class Phone
-Class Tag
+Class TaskList
+Class Task
}
Class HiddenOutside #FFFFFF
HiddenOutside ..> Model
+Model .left......> ReadOnlyUserPrefs
+Model ..> ReadOnlyContactList
+Model .right.> ReadOnlyTaskRecords
-AddressBook .up.|> ReadOnlyAddressBook
-
-ModelManager .up.|> Model
-Model .right.> ReadOnlyUserPrefs
-Model .left.> ReadOnlyAddressBook
-ModelManager -left-> "1" AddressBook
-ModelManager -right-> "1" UserPrefs
+ContactList .up.|> ReadOnlyContactList
+TaskRecords .up.|> ReadOnlyTaskRecords
UserPrefs .up.|> ReadOnlyUserPrefs
-AddressBook *--> "1" UniquePersonList
-UniquePersonList --> "~* all" Person
-Person *--> Name
-Person *--> Phone
-Person *--> Email
-Person *--> Address
-Person *--> "*" Tag
+ModelManager .up...|> Model
+ModelManager --> "1" ContactList
+ModelManager --> "1" UserPrefs
+ModelManager --> "1" TaskRecords
+
+
+ContactList *--> "1" UniquePersonList
+UniquePersonList ----> "~* all" Person
+TaskRecords -> "1" TaskList
+TaskList --> "~* all" Task
-Name -[hidden]right-> Phone
-Phone -[hidden]right-> Address
-Address -[hidden]right-> Email
+ModelManager ----> "~* filtered" Person
+ModelManager -----> "~* filtered" Task
-ModelManager -->"~* filtered" Person
+ReadOnlyUserPrefs -right[hidden]- ReadOnlyContactList
+ReadOnlyContactList -right[hidden]- ReadOnlyTaskRecords
@enduml
diff --git a/docs/diagrams/ParserClasses.puml b/docs/diagrams/ParserClasses.puml
index 6ba585cba01..6f4c2ce490f 100644
--- a/docs/diagrams/ParserClasses.puml
+++ b/docs/diagrams/ParserClasses.puml
@@ -9,7 +9,7 @@ Class XYZCommand
package "Parser classes"{
Interface Parser <>
-Class AddressBookParser
+Class SweeBookParser
Class XYZCommandParser
Class CliSyntax
Class ParserUtil
@@ -19,12 +19,12 @@ Class Prefix
}
Class HiddenOutside #FFFFFF
-HiddenOutside ..> AddressBookParser
+HiddenOutside ..> SweeBookParser
-AddressBookParser .down.> XYZCommandParser: creates >
+SweeBookParser .down.> XYZCommandParser: creates >
XYZCommandParser ..> XYZCommand : creates >
-AddressBookParser ..> Command : returns >
+SweeBookParser ..> Command : returns >
XYZCommandParser .up.|> Parser
XYZCommandParser ..> ArgumentMultimap
XYZCommandParser ..> ArgumentTokenizer
diff --git a/docs/diagrams/PersonAndTasksClassDiagram.puml b/docs/diagrams/PersonAndTasksClassDiagram.puml
new file mode 100644
index 00000000000..e87bd023f5f
--- /dev/null
+++ b/docs/diagrams/PersonAndTasksClassDiagram.puml
@@ -0,0 +1,54 @@
+@startuml
+!include style.puml
+skinparam arrowThickness 1.1
+skinparam arrowColor MODEL_COLOR
+skinparam classBackgroundColor MODEL_COLOR
+
+Package PersonAndTasks <>{
+Class Person
+Class Phone
+Class Email
+Class Github
+Class Telegram
+Class "{abstract}\nSocial" as Social
+
+Class Group
+
+Class Task
+Class Todo
+Class Deadline
+Class Event
+Class Priority
+Class Date
+Class Description
+class RecurringFrequency
+}
+
+Class HiddenOutside #FFFFFF
+HiddenOutside --> Person
+HiddenOutside -[hidden]- Group
+HiddenOutside --> Task
+
+Task -right-> "1" Group : is for >
+Person -left-> "1..2" Group : is in >
+
+Task --> "0..1" Date
+Task --> "1" Description
+Task --> " 1" RecurringFrequency
+Task --> "1" Priority
+
+Todo --|> Task
+Deadline --|> Task
+Event --|> Task
+
+Person --> "1" Phone
+Person --> "1" Email
+Person --> "1" Telegram
+Person --> "1" Github
+Telegram --|> Social
+Github --|> Social
+
+Phone -right[hidden]- Email
+Email -right[hidden]- Telegram
+Telegram -right[hidden]- Github
+@enduml
diff --git a/docs/diagrams/RecurringFrequencySequenceDiagram.puml b/docs/diagrams/RecurringFrequencySequenceDiagram.puml
new file mode 100644
index 00000000000..e9daab75744
--- /dev/null
+++ b/docs/diagrams/RecurringFrequencySequenceDiagram.puml
@@ -0,0 +1,52 @@
+@startuml
+!include style.puml
+
+participant ":MainApp" as MainApp LOGIC_COLOR
+box Model MODEL_COLOR_T1
+participant ":ModelManager" as ModelManager MODEL_COLOR
+participant ":TaskRecords" as TaskRecords MODEL_COLOR
+participant ":TaskList" as TaskList MODEL_COLOR
+participant "task:Task" as Task MODEL_COLOR
+participant "date:Date" as Date MODEL_COLOR
+end box
+
+create MainApp
+activate MainApp
+
+create ModelManager
+MainApp-> ModelManager : new ModelManager(initialData,\nuserPrefs, initialTasks)
+activate ModelManager
+
+ModelManager -> TaskRecords : updateRecurringTasks()
+activate TaskRecords
+
+TaskRecords -> TaskList : updateRecurringTaskDates()
+activate TaskList
+
+loop all tasks
+opt is a recurring task
+TaskList -> Task : updateRecurringTaskDate()
+activate Task
+
+opt is from last week
+Task -> Date : getDateForThisWeek()
+activate Date
+Date --> Task : newDate
+deactivate Date
+end
+
+Task -->TaskList
+deactivate Task
+end
+end
+TaskList --> TaskRecords
+deactivate TaskList
+
+TaskRecords -->ModelManager
+deactivate TaskRecords
+
+ModelManager --> MainApp
+deactivate ModelManager
+
+deactivate MainApp
+@enduml
diff --git a/docs/diagrams/RecurringTaskActivityDiagram.puml b/docs/diagrams/RecurringTaskActivityDiagram.puml
new file mode 100644
index 00000000000..7d8883eff21
--- /dev/null
+++ b/docs/diagrams/RecurringTaskActivityDiagram.puml
@@ -0,0 +1,22 @@
+@startuml
+start
+:User adds Task with recurring frequency;
+
+:Parse command arguments;
+
+if () then ([input is valid])
+ :Create new task which will recur;
+ :User restarts application;
+ if () then ([date of task needs
+ to be recurred])
+ :Date of task is updated to current week/month/year;
+ stop
+ else ([else])
+ :Task is not updated;
+ stop
+ endif
+else ([else])
+: Throw ParseException;
+stop
+endif
+@enduml
diff --git a/docs/diagrams/SortTaskActivityDiagram.puml b/docs/diagrams/SortTaskActivityDiagram.puml
new file mode 100644
index 00000000000..c99111f76ee
--- /dev/null
+++ b/docs/diagrams/SortTaskActivityDiagram.puml
@@ -0,0 +1,22 @@
+@startuml
+start
+:User enters sortTasks command;
+:Parse command word and arguments;
+
+if () then ([user input is valid])
+ :Create sortTasksComparator;
+ :Create sortTasksCommand
+ using the comparator;
+ :Execute sortTasksCommand;
+ :Reset any filters
+ set on the task list;
+ :Set the comparator of
+ the task list with
+ the sortTaskComparator,
+ and sorting it;
+ :Display sorted task list;
+else ([else])
+ :Throw \nParseException;
+
+stop
+@enduml
diff --git a/docs/diagrams/SortTasksExecutionSequenceDiagram.puml b/docs/diagrams/SortTasksExecutionSequenceDiagram.puml
new file mode 100644
index 00000000000..80ba132b70f
--- /dev/null
+++ b/docs/diagrams/SortTasksExecutionSequenceDiagram.puml
@@ -0,0 +1,58 @@
+@startuml
+!include style.puml
+
+box Logic LOGIC_COLOR_T1
+participant ":LogicManager" as LogicManager LOGIC_COLOR
+participant "s:SortTasksCommand" as SortTasksCommand LOGIC_COLOR
+participant ":CommandResult" as CommandResult LOGIC_COLOR
+end box
+
+box Model MODEL_COLOR_T1
+participant ":Model" as Model MODEL_COLOR
+end box
+
+box ObservableList UI_COLOR_T2
+participant ":FilteredList" as FilteredList UI_COLOR_T3
+participant ":SortedList" as SortedList UI_COLOR_T3
+end box
+
+
+[-> LogicManager : execute("sortTasks param/desc o/a")
+activate LogicManager
+
+ref over LogicManager, SortTasksCommand : Parses and return s:SortTasksCommand\nwith c:SortTaskComparator
+
+LogicManager -> SortTasksCommand : execute()
+activate SortTasksCommand
+
+SortTasksCommand -> Model : updateSortedTaskList(c)
+activate Model
+
+Model -> FilteredList : setPredicate(null)
+activate FilteredList
+
+FilteredList --> Model
+deactivate FilteredList
+
+Model -> SortedList : setComparator(c)
+activate SortedList
+
+SortedList --> Model
+deactivate SortedList
+
+Model --> SortTasksCommand
+deactivate Model
+
+create CommandResult
+SortTasksCommand -> CommandResult
+activate CommandResult
+
+CommandResult --> SortTasksCommand
+deactivate CommandResult
+
+SortTasksCommand --> LogicManager : result
+deactivate SortTasksCommand
+
+[<--LogicManager
+deactivate LogicManager
+@enduml
diff --git a/docs/diagrams/SortTasksParserSequenceDiagram.puml b/docs/diagrams/SortTasksParserSequenceDiagram.puml
new file mode 100644
index 00000000000..96e93c78eb7
--- /dev/null
+++ b/docs/diagrams/SortTasksParserSequenceDiagram.puml
@@ -0,0 +1,54 @@
+@startuml
+
+!include style.puml
+
+mainframe **sd** Parses and return s:SortTasksCommand with c:SortTaskComparator
+
+box Logic LOGIC_COLOR_T1
+participant ":LogicManager" as LogicManager LOGIC_COLOR
+participant ":AddressBookParser" as AddressBookParser LOGIC_COLOR
+participant ":SortTasksCommandParser" as SortTasksCommandParser LOGIC_COLOR
+participant "s:SortTasksCommand" as SortTasksCommand LOGIC_COLOR
+end box
+
+box Model MODEL_COLOR_T1
+participant "c:SortTaskComparator" as SortTaskComparator MODEL_COLOR
+end box
+
+LogicManager -> AddressBookParser : parseCommand("sortTasks \nparam/desc o/a")
+activate AddressBookParser
+
+create SortTasksCommandParser
+AddressBookParser -> SortTasksCommandParser
+activate SortTasksCommandParser
+
+SortTasksCommandParser --> AddressBookParser
+deactivate SortTasksCommandParser
+
+AddressBookParser -> SortTasksCommandParser : parse("param/desc\no/a")
+activate SortTasksCommandParser
+
+create SortTaskComparator
+SortTasksCommandParser -> SortTaskComparator : parse("desc", "a")
+activate SortTaskComparator
+
+SortTaskComparator --> SortTasksCommandParser : c
+deactivate SortTaskComparator
+
+create SortTasksCommand
+SortTasksCommandParser -> SortTasksCommand : SortTasksCommand(c)
+activate SortTasksCommand
+
+SortTasksCommand --> SortTasksCommandParser : s
+deactivate SortTasksCommand
+
+SortTasksCommandParser --> AddressBookParser : s
+deactivate SortTasksCommand
+'Hidden arrow to position the destroy marker below the end of the activation bar.
+SortTasksCommandParser -[hidden]-> AddressBookParser
+destroy SortTasksCommandParser
+
+AddressBookParser --> LogicManager : s
+deactivate AddressBookParser
+
+@enduml
diff --git a/docs/diagrams/StorageClassDiagram.puml b/docs/diagrams/StorageClassDiagram.puml
index 85ac3ea2dee..744d20b3a0d 100644
--- a/docs/diagrams/StorageClassDiagram.puml
+++ b/docs/diagrams/StorageClassDiagram.puml
@@ -14,12 +14,20 @@ Class JsonUserPrefsStorage
Interface Storage <>
Class StorageManager
-package "AddressBook Storage" #F4F6F6{
-Interface AddressBookStorage <>
-Class JsonAddressBookStorage
-Class JsonSerializableAddressBook
+
+package "TaskRecordsStorage" #F4F6F6{
+Interface TaskRecordsStorage <>
+Class JsonTaskRecordsStorage
+Class JsonSerializableTaskRecords
+Class JsonAdaptedTask
+}
+
+package "ContactListStorage" #F4F6F6{
+Interface ContactListStorage <>
+Class JsonContactListStorage
+Class JsonSerializableContactList
Class JsonAdaptedPerson
-Class JsonAdaptedTag
+Class JsonAdaptedGroup
}
}
@@ -29,15 +37,21 @@ HiddenOutside ..> Storage
StorageManager .up.|> Storage
StorageManager -up-> "1" UserPrefsStorage
-StorageManager -up-> "1" AddressBookStorage
+StorageManager -up-> "1" ContactListStorage
+StorageManager -up-> "1" TaskRecordsStorage
Storage -left-|> UserPrefsStorage
-Storage -right-|> AddressBookStorage
+Storage -right-|> ContactListStorage
+Storage -down-|> TaskRecordsStorage
JsonUserPrefsStorage .up.|> UserPrefsStorage
-JsonAddressBookStorage .up.|> AddressBookStorage
-JsonAddressBookStorage ..> JsonSerializableAddressBook
-JsonSerializableAddressBook --> "*" JsonAdaptedPerson
-JsonAdaptedPerson --> "*" JsonAdaptedTag
+JsonContactListStorage .up.|> ContactListStorage
+JsonContactListStorage ..> JsonSerializableContactList
+JsonSerializableContactList --> "*" JsonAdaptedPerson
+JsonAdaptedPerson --> JsonAdaptedGroup
+
+JsonTaskRecordsStorage .up.|> TaskRecordsStorage
+JsonTaskRecordsStorage ..> JsonSerializableTaskRecords
+JsonSerializableTaskRecords --> "*" JsonAdaptedTask
@enduml
diff --git a/docs/diagrams/UiClassDiagram.puml b/docs/diagrams/UiClassDiagram.puml
index ecae4876432..b5c13c10da3 100644
--- a/docs/diagrams/UiClassDiagram.puml
+++ b/docs/diagrams/UiClassDiagram.puml
@@ -15,6 +15,8 @@ Class PersonListPanel
Class PersonCard
Class StatusBarFooter
Class CommandBox
+Class TaskListPanel
+Class TaskCard
}
package Model <> {
@@ -35,8 +37,10 @@ MainWindow *-down-> "1" ResultDisplay
MainWindow *-down-> "1" PersonListPanel
MainWindow *-down-> "1" StatusBarFooter
MainWindow --> "0..1" HelpWindow
+MainWindow *-down-> "1" TaskListPanel
PersonListPanel -down-> "*" PersonCard
+TaskListPanel -down-> "*" TaskCard
MainWindow -left-|> UiPart
@@ -46,8 +50,10 @@ PersonListPanel --|> UiPart
PersonCard --|> UiPart
StatusBarFooter --|> UiPart
HelpWindow --|> UiPart
+TaskListPanel --|> UiPart
-PersonCard ..> Model
+PersonCard ...> Model
+TaskCard ...> Model
UiManager -right-> Logic
MainWindow -left-> Logic
diff --git a/docs/images/AddTaskSequenceDiagram.png b/docs/images/AddTaskSequenceDiagram.png
new file mode 100644
index 00000000000..974a4049f18
Binary files /dev/null and b/docs/images/AddTaskSequenceDiagram.png differ
diff --git a/docs/images/AddTaskSequenceDiagram1.png b/docs/images/AddTaskSequenceDiagram1.png
new file mode 100644
index 00000000000..37d09608219
Binary files /dev/null and b/docs/images/AddTaskSequenceDiagram1.png differ
diff --git a/docs/images/ArchitectureSequenceDiagramAddTask.png b/docs/images/ArchitectureSequenceDiagramAddTask.png
new file mode 100644
index 00000000000..f01510d1560
Binary files /dev/null and b/docs/images/ArchitectureSequenceDiagramAddTask.png differ
diff --git a/docs/images/ArchitectureSequenceDiagramAddTask1.png b/docs/images/ArchitectureSequenceDiagramAddTask1.png
new file mode 100644
index 00000000000..f01510d1560
Binary files /dev/null and b/docs/images/ArchitectureSequenceDiagramAddTask1.png differ
diff --git a/docs/images/DoneTaskCommandActivityDiagram.png b/docs/images/DoneTaskCommandActivityDiagram.png
new file mode 100644
index 00000000000..17d9a2129fa
Binary files /dev/null and b/docs/images/DoneTaskCommandActivityDiagram.png differ
diff --git a/docs/images/DoneTaskSequenceDiagram.png b/docs/images/DoneTaskSequenceDiagram.png
new file mode 100644
index 00000000000..e1ada184ef2
Binary files /dev/null and b/docs/images/DoneTaskSequenceDiagram.png differ
diff --git a/docs/images/EditPersonExample1.png b/docs/images/EditPersonExample1.png
new file mode 100644
index 00000000000..2e39529d4b3
Binary files /dev/null and b/docs/images/EditPersonExample1.png differ
diff --git a/docs/images/EditPersonExample2.png b/docs/images/EditPersonExample2.png
new file mode 100644
index 00000000000..61d8816893a
Binary files /dev/null and b/docs/images/EditPersonExample2.png differ
diff --git a/docs/images/EditTaskExample1.PNG b/docs/images/EditTaskExample1.PNG
new file mode 100644
index 00000000000..3d13bf69c18
Binary files /dev/null and b/docs/images/EditTaskExample1.PNG differ
diff --git a/docs/images/EditTaskSequenceDiagram.png b/docs/images/EditTaskSequenceDiagram.png
new file mode 100644
index 00000000000..7a861ead5f9
Binary files /dev/null and b/docs/images/EditTaskSequenceDiagram.png differ
diff --git a/docs/images/FilterTasksScreenshot.png b/docs/images/FilterTasksScreenshot.png
new file mode 100644
index 00000000000..0c3e7c61f55
Binary files /dev/null and b/docs/images/FilterTasksScreenshot.png differ
diff --git a/docs/images/GroupCommandExample1.png b/docs/images/GroupCommandExample1.png
new file mode 100644
index 00000000000..e4497cf8975
Binary files /dev/null and b/docs/images/GroupCommandExample1.png differ
diff --git a/docs/images/LogicClassDiagram.png b/docs/images/LogicClassDiagram.png
index c3028aa1cda..5faa4769bad 100644
Binary files a/docs/images/LogicClassDiagram.png and b/docs/images/LogicClassDiagram.png differ
diff --git a/docs/images/ModelClassDiagram.png b/docs/images/ModelClassDiagram.png
index 39d7aec4b33..ea8536d6b0d 100644
Binary files a/docs/images/ModelClassDiagram.png and b/docs/images/ModelClassDiagram.png differ
diff --git a/docs/images/ParserClasses.png b/docs/images/ParserClasses.png
index 58ad22ce16a..31a0e38403b 100644
Binary files a/docs/images/ParserClasses.png and b/docs/images/ParserClasses.png differ
diff --git a/docs/images/PersonAndTasksClassDiagram.png b/docs/images/PersonAndTasksClassDiagram.png
new file mode 100644
index 00000000000..499336cfe22
Binary files /dev/null and b/docs/images/PersonAndTasksClassDiagram.png differ
diff --git a/docs/images/QuickStartSS.PNG b/docs/images/QuickStartSS.PNG
new file mode 100644
index 00000000000..f3c476d6601
Binary files /dev/null and b/docs/images/QuickStartSS.PNG differ
diff --git a/docs/images/RecurringFrequencySequenceDiagram.png b/docs/images/RecurringFrequencySequenceDiagram.png
new file mode 100644
index 00000000000..b2508d6610c
Binary files /dev/null and b/docs/images/RecurringFrequencySequenceDiagram.png differ
diff --git a/docs/images/RecurringTaskActivityDiagram.png b/docs/images/RecurringTaskActivityDiagram.png
new file mode 100644
index 00000000000..6451e29972b
Binary files /dev/null and b/docs/images/RecurringTaskActivityDiagram.png differ
diff --git a/docs/images/SortTasksActivityDiagram.png b/docs/images/SortTasksActivityDiagram.png
new file mode 100644
index 00000000000..4dcda76304c
Binary files /dev/null and b/docs/images/SortTasksActivityDiagram.png differ
diff --git a/docs/images/SortTasksExecutionSequenceDiagram.png b/docs/images/SortTasksExecutionSequenceDiagram.png
new file mode 100644
index 00000000000..3b71780ec1a
Binary files /dev/null and b/docs/images/SortTasksExecutionSequenceDiagram.png differ
diff --git a/docs/images/SortTasksParserSequenceDiagram.png b/docs/images/SortTasksParserSequenceDiagram.png
new file mode 100644
index 00000000000..2260844516e
Binary files /dev/null and b/docs/images/SortTasksParserSequenceDiagram.png differ
diff --git a/docs/images/SortTasksScreenshot.png b/docs/images/SortTasksScreenshot.png
new file mode 100644
index 00000000000..f97ba1cc600
Binary files /dev/null and b/docs/images/SortTasksScreenshot.png differ
diff --git a/docs/images/StorageClassDiagram1.png b/docs/images/StorageClassDiagram1.png
new file mode 100644
index 00000000000..0401de48dd9
Binary files /dev/null and b/docs/images/StorageClassDiagram1.png differ
diff --git a/docs/images/SweebookModelClassDiagram.png b/docs/images/SweebookModelClassDiagram.png
new file mode 100644
index 00000000000..1b0a07146e9
Binary files /dev/null and b/docs/images/SweebookModelClassDiagram.png differ
diff --git a/docs/images/UIDesign.png b/docs/images/UIDesign.png
new file mode 100644
index 00000000000..fd9de0e887b
Binary files /dev/null and b/docs/images/UIDesign.png differ
diff --git a/docs/images/UISS.PNG b/docs/images/UISS.PNG
new file mode 100644
index 00000000000..2ab9ddd5df5
Binary files /dev/null and b/docs/images/UISS.PNG differ
diff --git a/docs/images/Ui.png b/docs/images/Ui.png
index 91488fd1a0f..6b268c508f1 100644
Binary files a/docs/images/Ui.png and b/docs/images/Ui.png differ
diff --git a/docs/images/UiClassDiagram.png b/docs/images/UiClassDiagram.png
index 4bb8b2ce591..28a6262463a 100644
Binary files a/docs/images/UiClassDiagram.png and b/docs/images/UiClassDiagram.png differ
diff --git a/docs/images/UserGuideCLIRedBox.png b/docs/images/UserGuideCLIRedBox.png
new file mode 100644
index 00000000000..b61c0308114
Binary files /dev/null and b/docs/images/UserGuideCLIRedBox.png differ
diff --git a/docs/images/UserGuideGUIRedBox.png b/docs/images/UserGuideGUIRedBox.png
new file mode 100644
index 00000000000..5f61efd4198
Binary files /dev/null and b/docs/images/UserGuideGUIRedBox.png differ
diff --git a/docs/images/addTaskExample1.PNG b/docs/images/addTaskExample1.PNG
new file mode 100644
index 00000000000..748c0d82723
Binary files /dev/null and b/docs/images/addTaskExample1.PNG differ
diff --git a/docs/images/addTaskExample2.PNG b/docs/images/addTaskExample2.PNG
new file mode 100644
index 00000000000..1477c6683c3
Binary files /dev/null and b/docs/images/addTaskExample2.PNG differ
diff --git a/docs/images/addTaskExample3.PNG b/docs/images/addTaskExample3.PNG
new file mode 100644
index 00000000000..b37d0f3ca33
Binary files /dev/null and b/docs/images/addTaskExample3.PNG differ
diff --git a/docs/images/alinaleehx.png b/docs/images/alinaleehx.png
new file mode 100644
index 00000000000..10232522765
Binary files /dev/null and b/docs/images/alinaleehx.png differ
diff --git a/docs/images/ambroseboo.png b/docs/images/ambroseboo.png
new file mode 100644
index 00000000000..c77dce4817f
Binary files /dev/null and b/docs/images/ambroseboo.png differ
diff --git a/docs/images/codeReuseHyperlink.png b/docs/images/codeReuseHyperlink.png
new file mode 100644
index 00000000000..b63fe0eaf74
Binary files /dev/null and b/docs/images/codeReuseHyperlink.png differ
diff --git a/docs/images/codeReuseRegex.png b/docs/images/codeReuseRegex.png
new file mode 100644
index 00000000000..d18ffb62d5c
Binary files /dev/null and b/docs/images/codeReuseRegex.png differ
diff --git a/docs/images/cyyeu.png b/docs/images/cyyeu.png
new file mode 100644
index 00000000000..dc75126ebe3
Binary files /dev/null and b/docs/images/cyyeu.png differ
diff --git a/docs/images/deleteTaskCommandExample.png b/docs/images/deleteTaskCommandExample.png
new file mode 100644
index 00000000000..8b35e53335f
Binary files /dev/null and b/docs/images/deleteTaskCommandExample.png differ
diff --git a/docs/images/doneTaskCommandExample.png b/docs/images/doneTaskCommandExample.png
new file mode 100644
index 00000000000..104267c5de4
Binary files /dev/null and b/docs/images/doneTaskCommandExample.png differ
diff --git a/docs/images/findAlexDavidResult.png b/docs/images/findAlexDavidResult.png
index 235da1c273e..91fe624f3bd 100644
Binary files a/docs/images/findAlexDavidResult.png and b/docs/images/findAlexDavidResult.png differ
diff --git a/docs/images/findAlexResult.png b/docs/images/findAlexResult.png
new file mode 100644
index 00000000000..676a51aa513
Binary files /dev/null and b/docs/images/findAlexResult.png differ
diff --git a/docs/images/github.png b/docs/images/github.png
new file mode 100644
index 00000000000..4d639db6e2c
Binary files /dev/null and b/docs/images/github.png differ
diff --git a/docs/images/groupCs2101.png b/docs/images/groupCs2101.png
new file mode 100644
index 00000000000..b997129831c
Binary files /dev/null and b/docs/images/groupCs2101.png differ
diff --git a/docs/images/groupCs2103t.png b/docs/images/groupCs2103t.png
new file mode 100644
index 00000000000..7a5617b9f0e
Binary files /dev/null and b/docs/images/groupCs2103t.png differ
diff --git a/docs/images/helpMessage.png b/docs/images/helpMessage.png
index b1f70470137..f3103122471 100644
Binary files a/docs/images/helpMessage.png and b/docs/images/helpMessage.png differ
diff --git a/docs/images/josephn37.png b/docs/images/josephn37.png
new file mode 100644
index 00000000000..fbfb9abba8d
Binary files /dev/null and b/docs/images/josephn37.png differ
diff --git a/docs/images/mail.png b/docs/images/mail.png
new file mode 100644
index 00000000000..e2bf04afdf1
Binary files /dev/null and b/docs/images/mail.png differ
diff --git a/docs/images/tele.jpeg b/docs/images/tele.jpeg
new file mode 100644
index 00000000000..d26742fde15
Binary files /dev/null and b/docs/images/tele.jpeg differ
diff --git a/docs/images/zhenxuantan.png b/docs/images/zhenxuantan.png
new file mode 100644
index 00000000000..0a2dd68cffb
Binary files /dev/null and b/docs/images/zhenxuantan.png differ
diff --git a/docs/index.md b/docs/index.md
index 7601dbaad0d..9f0bf644ffe 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,19 +1,20 @@
---
layout: page
-title: AddressBook Level-3
+title: SWEe-book
---
-[![CI Status](https://github.com/se-edu/addressbook-level3/workflows/Java%20CI/badge.svg)](https://github.com/se-edu/addressbook-level3/actions)
-[![codecov](https://codecov.io/gh/se-edu/addressbook-level3/branch/master/graph/badge.svg)](https://codecov.io/gh/se-edu/addressbook-level3)
+[![CI Status](https://github.com/AY2122S1-CS2103T-W12-2/tp/actions/workflows/gradle.yml/badge.svg)](https://github.com/AY2122S1-CS2103T-W12-2/tp/actions/workflows/gradle.yml)
+[![codecov](https://codecov.io/gh/AY2122S1-CS2103T-W12-2/tp/branch/master/graph/badge.svg?token=MORDANUUIH)](https://codecov.io/gh/AY2122S1-CS2103T-W12-2/tp)
![Ui](images/Ui.png)
-**AddressBook is a desktop application for managing your contact details.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).
+**SWEe-book is a project management tool targeted for CS2103T students.** While it has a GUI, most of the user interactions happen using a CLI (Command Line Interface).
-* If you are interested in using AddressBook, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).
-* If you are interested about developing AddressBook, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.
+* If you are interested in using SWEe-book, head over to the [_Quick Start_ section of the **User Guide**](UserGuide.html#quick-start).
+* If you are interested about developing SWEe-book, the [**Developer Guide**](DeveloperGuide.html) is a good place to start.
**Acknowledgements**
* Libraries used: [JavaFX](https://openjfx.io/), [Jackson](https://github.com/FasterXML/jackson), [JUnit5](https://github.com/junit-team/junit5)
+* This project is based on the AddressBook-Level3 project created by the [SE-EDU initiative](https://se-education.org).
diff --git a/docs/team/JosephN37.md b/docs/team/JosephN37.md
new file mode 100644
index 00000000000..d374b5bbb96
--- /dev/null
+++ b/docs/team/JosephN37.md
@@ -0,0 +1,36 @@
+---
+layout: page
+title: Joseph's Project Portfolio Page
+---
+
+# Project: SWEe-book
+
+SWEe-book is a desktop application used for contact and task management pertaining to CS2103T and CS2101 module. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.
+
+Given below are my contributions to the project.
+
+* **New Feature**: Added FilterTasks command to filter tasks according to specified criterion.
+ * What it does: Filters the task list according to the argument input (date, tasktype, priority, description, group)
+ * Justification: This feature improves the product significantly because a user can now filter and look through the tasks that they desire, for instance the list of tasks for a specific date, or one which has specific keywords.
+ * Highlights: Since this enhancement allows user to filter tasks according to specified word / phrase, FilterTasks essentially encompasses a search function too
+ * Credits:
+
+* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=w12-2&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=authorship&tabAuthor=simonjulianl&tabRepo=AY2122S1-CS2103T-T15-1%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&zFR=false)
+
+* **Project management**:
+ * Managed releases `v1.3` (1 release) on GitHub
+
+* **Enhancements to existing features**:
+
+
+* **Documentation**:
+ * User Guide:
+ * Added documentation for the feature `FilterTasks`.
+ * Cleared Address book remnants in the User Guide.
+ * Developer Guide:
+ * Added UML diagram to illustrate AddTask command, and for storage component.
+ * Modified existing UML diagrams from Address book to suit SWEe-book.
+
+* **Community**:
+ * PRs reviewed (with non-trivial review comments): [\#123](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/123)
+
diff --git a/docs/team/alinaleehx.md b/docs/team/alinaleehx.md
new file mode 100644
index 00000000000..7df1d60fa82
--- /dev/null
+++ b/docs/team/alinaleehx.md
@@ -0,0 +1,58 @@
+---
+layout: page
+title: Alina Lee's Project Portfolio Page
+---
+### Project: SWEe-book
+
+SWEe-book is a desktop application used for contact and task management pertaining to CS2103T and CS2101 module. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.
+
+Given below are my contributions to the project.
+
+* **Enhancements to existing features**:
+ * Update test data for tasks. [#47](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/47)
+ * Add additional tests. [#66](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/66)
+
+* **New Feature**: Added internal features like tasks, group, taskList, storage for tasks and more to support task management in the app SWEe-book. [#5](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/5)
+ * What it does: Created the internal features necessary for all task commands and task management in SWEe-book.
+ * Justification: This allows for development of features related to task management and is hence essential.
+ * Highlights: All future commands related to task management relies on this.
+
+* **New Feature**: Add the ability to add 3 different types of tasks. [#5](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/5) [#42](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/42)
+ * What it does: allows the user to add 3 different types of tasks, namely todo, event and deadline specifying date, group and task description.
+ * Justification: This feature allows the user to add and keep track of the tasks that needs to be done for each group by a certain date.
+ * Highlights: This allows 3 different types of tasks which likely covers most user's needs for task types, and
+ provides the base for other future features like sorting and filtering tasks and is a basic but integral part of task management in SWEe-book.
+
+* **New Feature**: Added the ability to delete a task. [#39](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/39)
+ * What it does: allows the user to delete a task already present in the task list, namely by keying the index of that task to be deleted.
+ * Justification: This feature improves the product significantly because a user can make mistakes when using addTask
+ command and this feature provides a convenient way to rectify these mistakes by allowing the user to delete the tasks that are added by mistake or no longer needed.
+ * Highlights: This allows users to delete tasks and is a key feature of task management in SWEe-book.
+
+* **New Feature**: Added the ability to mark a task as done. [#69](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/69) [#123](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/123)
+ * What it does: allows the user to mark a task already present in the task list as done, namely by keying the index of that task to be marked as done.
+ * Justification: This feature allows the user to keep track of which tasks are done or not yet done.
+ * Highlights: Task List UI is updated synchronously when task is marked as done.
+
+* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=authorship&tabAuthor=alinaleehx&tabRepo=AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code&authorshipIsBinaryFileTypeChecked=false)
+
+* **Project management**:
+ * Reviewed and successfully 3 pull requests into the team's repository. [#122](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/122)
+ [#73](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/73) [#67](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/67)
+
+* **Documentation**:
+ * User Guide:
+ * Added documentation for `addTask` command [#47](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/47)
+ * Added documentation for `deleteTasks` command [#47](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/47)
+ * Added documentation for `doneTasks` command [#69](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/69)
+ * Did cosmetic tweaks to existing documentation of features `help` [#125](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/125)
+ * Added UI mockup for initial user guide [#20](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/20)
+
+ * Developer Guide:
+ * Added documentation for `addTasks` command and `deleteTasks` command [#47](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/47)
+ * Added documentation for `doneTasks` command [#69](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/69)
+ [#149](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/149)
+ [#151](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/151)
+
+* **Community**:
+ * Helped to spot bugs in Practical Examinations - Dry Run (PE-D) [Issues](https://github.com/alinaleehx/ped/issues)
diff --git a/docs/team/ambroseboo.md b/docs/team/ambroseboo.md
new file mode 100644
index 00000000000..78a4507ae89
--- /dev/null
+++ b/docs/team/ambroseboo.md
@@ -0,0 +1,138 @@
+---
+layout: page
+title: Ambrose's Project Portfolio Page
+---
+
+### Project: SWEe-book
+
+SWEe-book is a desktop application used for contact and task management pertaining to CS2103T and CS2101 module. The
+user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.
+
+Given below are my contributions to the project.
+
+* **Enhancements to existing features**:
+ * Implement listTasks to reflect in GUI, so that both contacts and tasks are simultaneously displayed [#49](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/49)
+
+* **New Feature**: Added the ability to list all tasks added. [#37](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/37), [#46](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/46), [#50](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/50)
+ * What it does: Allows the user to list all tasks that were previously added to the project.
+ * Justification: This feature allows users to view their added tasks, and serves as a start point fetch data for
+ filterTasks and also the tasks appearing on the UI on startup.
+ * Highlights: Upon the editing of the UI to include the task section, the tasks are reflected in the GUI rather than
+ the CLI.
+
+* **New Feature**: Added the ability to add recurring frequencies to tasks. [#59](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/59)
+ * What it does: Allows the user to add recurring frequencies to their tasks which can be weekly, monthly, or yearly
+ frequencies. For weekly,
+ the tasks are repeated on the same day of the week, for monthly the tasks are repeated by the date (DD) every
+ month, for yearly the tasks are repeated by the DD/MM every year.
+ * Justification: This feature allows the user to add tasks that can repeat themselves, so that the tasks can update
+ themselves automatically.
+ * Highlights: The tasks are updated on the startup of the application, ensuring they are always updated whenever the
+ user opens the application.
+
+* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=CS2103T-W12-2&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=zoom&tabAuthor=zhenxuantan&tabRepo=AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&zA=ambroseboo&zR=AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D&zACS=198.05172413793105&zS=2021-09-17&zFS=CS2103T-W12-2&zU=2021-11-07&zMG=false&zFTF=commit&zFGS=groupByRepos&zFR=false&until=2021-11-07)
+
+* **Project management**:
+ * Merged and fixed style errors on pull request #5 and #139 into the team's repository
+
+* **Documentation**:
+ * User Guide:
+ * Added initial documentation for `addTask`, `deleteTask`, `listTasks`, `filterTasks`, `sortTasks`
+ * Added full documentation for `listTasks`
+ * Updated command summary
+ * Updated documentation for `addTask` (explain recurring field), add screenshots
+ * Developer Guide:
+ * Added documentation for implementation of `recurring` feature in `Task`
+ * Including sequence diagram and activity diagram for recurring frequency
+
+* **Community**:
+ * Helped to spot bugs in Practical Examinations - Dry Run (PE-D) [Issues](https://github.com/ambroseboo/ped/issues)
+
+
+
+## **Contributions to the Developer Guide (Extracts)**:
+### Recurring Tasks feature
+#### Implementation
+The recurring task feature allows users to add tasks that can be repeated by week, month, or year. It is facilitated
+by `RecurringFrequency`, which is a optional component of `Task`. Additionally, the following operations are implemented
+in `Task`, `TaskList`, `TaskRecords` and `Date`:
+* `Task#updateRecurringTaskDate()` - Task updates its Date to the current week/month/year, based on the
+ recurringFrequency of the Task.
+* `Date#isLastWeek()`, `Date#isLastMonth()`, `Date#isLastYear()` - Checks current Date of Task against real-time date.
+* `Date#getDateForThisWeek()`, `Date#getDateForThisMonth()`, `Date#getDateForThisYear()` - Updates Date to be within
+ current week/month/year.
+* `TaskList#updateRecurringTasksDates()` - Iterates through list of Tasks and updates its Date if Task is recurring.
+* `TaskRecords#updateRecurringTasks()` - Calls for TaskList to update recurring Tasks.
+
+`TaskRecords#updateRecurringTasks()` is used in the `ModelManager` on boot-up of the application to update all Tasks, if
+required. Below is a sequence diagram after the initialisation of the `ModelManager`:
+
+![Seq-diagram for updating dates of recurring Tasks after start up](../images/RecurringFrequencySequenceDiagram.png)
+
+Do note that `Date` is required for a `Task` to be recurring. Notably, `Date` is optional for `Todo`.
+
+
+
+Given below is an example usage scenario of how a recurring task is added and how it behaves upon re-launching of
+the SWEe-book application.
+
+* Step 1. The user launches the application. A recurring `Task` is added, where the user specifies the
+ `recurringFrequency` to be weekly, and the `Date` to be from the previous week. The `Task` is added, but the `Date` is
+ not updated yet, even if it is not of the current week. The `recurringFrequency` of the task is marked as `week`.
+* Step 2. The user re-launches the application. `ModelManager` calls `TaskRecords#updateRecurringTasks()`, which then
+ calls `TaskList#updateRecurringTasksDates()`, which then calls `Task#updateRecurringTaskDate()` on the task added.
+ Since the `Task` added was recurring (its `recurringFrequency` is marked as `week`, its `Date` is updated to the
+ current week, with the same day.
+* Step 3. The user then launches the application a week after. The `Task` is updated similarly to Step 2, and since it
+ is checked against real-time, it is updated to the current week.
+
+Given below is an activity diagram when a user adds a recurring task and restarts his SWEe-book application.
+
+![Activity-diagram for user adding recurring Task](../images/RecurringTaskActivityDiagram.png)
+
+
+
+#### Alternative considerations
+* Alternative 1: Let the user choose when to refresh his tasks to their new dates, rather than on start-up of the
+ application.
+ * Pros: Allows user more control over their recurring tasks
+ * Cons: Less intuitive since tasks are not updated to real-time, having a refresh command just for recurring tasks
+ is not ideal.
+
+
+
+## **Contributions to the User Guide (Extracts)**:
+#### Adding a Task : `addTask`
+
+Adds a new task to SWEe-book.
+
+Format: `addTask d/DESCRIPTION g/GROUP type/TYPE [date/DATE] [pty/PRIORITY] [recurring/RECURRING_FREQUENCY]`
+* `GROUP` refers to one of the 2 groups: `CS2101` or `CS2103T`
+* `TYPE` refers to one of the 3 types of tasks: `todo`, `event` or `deadline`
+* `DATE` is in YYYY-MM-DD format and is only needed for events or deadlines (i.e. `DATE` is optional for Todo tasks)
+* `PRIORITY` refers to one of the 3 levels of priorities / importance of the task: `low`, `med` (default) or `high`
+* `RECURRING_FREQUENCY` refers to one of the 3 different frequencies that the task could occur: `week`, `month` or
+ `year` (where `week` means that the task is recurring weekly)
+ * Any Task that has a recurring frequency must have a date as well, for example a Todo with recurring frequency must
+ have a date.
+
+
+
+Examples:
+* `addTask d/Project meeting g/CS2103T type/todo pty/low`
+ * Add a non-recurring `todo` with no date and `low` priority and
+ task description `Project meeting` to the group `CS2103T`
+ ![result for 'addTask d/Project meeting g/CS2103T type/todo pty/low'](../images/addTaskExample1.PNG)
+
+* `addTask d/Presentation 1 g/CS2101 type/deadline date/2020-11-02 pty/high`
+ * Add a non-recurring `deadline` due on `2020-11-02`
+ with `high` priority and task description `Presentation 1`to the group `CS2101`
+ ![result for 'addTask d/Presentation 1 g/CS2101 type/deadline date/2020-11-02 pty/high'](../images/addTaskExample2.PNG)
+
+
+
+* `addTask d/Mock QnA 1 g/CS2101 type/event date/2020-10-02 recurring/month`
+ * Add a `event` that recurs every `month` with
+ date `2020-10-02` and default `med` priority and task description `Mock QnA` to the group `CS2101`
+ ![result for 'addTask d/Mock QnA 1 g/CS2101 type/event date/2020-10-02 recurring/month'](../images/addTaskExample3.PNG)
+
diff --git a/docs/team/cyyeu.md b/docs/team/cyyeu.md
new file mode 100644
index 00000000000..2bf41746d17
--- /dev/null
+++ b/docs/team/cyyeu.md
@@ -0,0 +1,46 @@
+---
+layout: page
+title: Chen Yuan's Project Portfolio Page
+---
+
+### Project: SWEe-book
+
+SWEe-book is a desktop application used for contact and task management pertaining to CS2103T and CS2101 module. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.
+
+Given below are my contributions to the project.
+
+
+* **Enhancements to existing features**:
+ * Removed address and tag fields from Person as they were irrelevant to our product.
+ * Added Telegram And Github, Group fields into Person.
+ * Refactored the `add` and `edit` command to reflect both of the above changes
+
+* **New Feature**: Added the ability to edit tasks.
+ * What it does: allows the user to choose a task from the list in the UI, and edit any number of fields of this task.
+ * Justification: This feature removes the hassle of the need to delete and add a new task, just to change one field of a task.
+ * Highlights: Wrote tests to cover the new feature
+
+* **New Feature**: Added the ability to filter people by group.
+ * What it does: allows the user to filter the list of people by group (CS2103T or CS2101)
+ * Justification: This feature allows the user to have an overview of their groupmates from a specific group, should there be a need to declutter the contact list.
+ * Highlights: Refactored and add new tests to cover the deleted (address and tag) and newly added fields (github and telegram and group).
+
+
+* **Code contributed**: [RepoSense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=authorship&tabAuthor=cyyeu&tabRepo=AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false)
+
+* **Project management**:
+ * Managed releases `v1.1` - `v1.2` (2 releases) on GitHub
+ * Merged 21/75 pull requests
+ * Set up GitHub repo and Codecov
+
+* **Documentation**:
+ * User Guide:
+ * Added documentation for the features `editTask` command
+ * Update documentation for the refactored `add` and `edit` commands
+ * Developer Guide:
+ * Added implementation details of the `edit` feature.
+ * Updated documentation for the model component to reflect latest changes
+ * Add use case for `editTask` feature
+
+* **Community**:
+ * Helped to spot bugs in Practical Examinations - Dry Run (PE-D) [Issues](https://github.com/cyyeu/ped/issues)
diff --git a/docs/team/zhenxuantan.md b/docs/team/zhenxuantan.md
new file mode 100644
index 00000000000..99ecc027d56
--- /dev/null
+++ b/docs/team/zhenxuantan.md
@@ -0,0 +1,64 @@
+---
+layout: page
+title: Zhen Xuan's Project Portfolio Page
+---
+
+## **Project: SWEe-book**
+
+### **Overview**
+
+SWEe-book is a desktop application used for contact and task management pertaining to CS2103T and CS2101 module. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java.
+
+Given below are my contributions to the project.
+
+**Code contributed**: [RepoSense link](https://nus-cs2103-ay2122s1.github.io/tp-dashboard/?search=CS2103T-W12-2&sort=groupTitle&sortWithin=title&timeframe=commit&mergegroup=&groupSelect=groupByRepos&breakdown=true&checkedFileTypes=docs~functional-code~test-code~other&since=2021-09-17&tabOpen=true&tabType=zoom&tabAuthor=zhenxuantan&tabRepo=AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D&authorshipIsMergeGroup=false&authorshipFileTypes=docs~functional-code~test-code~other&authorshipIsBinaryFileTypeChecked=false&zA=zhenxuantan&zR=AY2122S1-CS2103T-W12-2%2Ftp%5Bmaster%5D&zACS=198.05172413793105&zS=2021-09-17&zFS=CS2103T-W12-2&zU=2021-11-05&zMG=false&zFTF=commit&zFGS=groupByRepos&zFR=false&until=2021-11-05)
+
+### **Enhancements to existing features**
+
+* Improved Ui for contact list and added Ui for task list [#48](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/48)
+* Removed all references to pre-existing project ([AB-3](https://se-education.org/addressbook-level3/)) [#127](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/127)
+* Wrote tests for the internal features like Task, Group, TaskList and Date [#132](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/132)
+
+### **New Features added**
+
+#### **Added the ability to sort the tasks in 8 different ways.** [#38](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/38), [#46](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/46), [$50](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/50)
+
+* What it does: allows the user to sort the tasks based on their description, group, priority, and (due) date in two different orders: ascending order and descending order.
+* Justification: This feature allows the user to navigate through their tasks easily, giving them a broad overview of what is important or urgent instead of having to scroll through the whole task list.
+* Highlights: Reflected changes in Ui and allowed users to perform other commands like delete task while having the task list sorted, it also allows potential future commands like sorting and filtering simultaneously or sorting via multiple variables to be implemented easily.
+
+
+
+#### **Added the ability to add priorities to tasks.** [#64](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/64)
+
+* What it does: allows the user to add priorities to their tasks which includes high, medium or low priorities.
+* Justification: This feature allows the user to recognise the importance of their tasks without having to read the whole task list.
+* Highlights: Allowed the level of priority to change the colour of the alert in the Ui, utilising code to change the Ui based on the type of priority of the task.
+
+#### **Allowed date, priority and recurring frequency to be optional.** [#64](https://github.com/AY2122S1-CS2103T-W12-2/tp/pull/64)
+
+* What it does: allows users to add tasks without having to type date (todo task only), priority or recurring frequency.
+* Justification: This feature allows the user to add tasks without the hassle of typing too many parameters by making tasks having the default priority of medium and default recurring frequency of none.
+* Highlights: This enhancement allows future parameters or fields to be optional as well.
+
+### **Project Management**
+
+* Merged 28 out of 79 successfully merged pull requests into the team's repository
+
+### **Documentation**
+
+#### **User Guide**
+
+* Added documentation for `sortTasks` command
+* Added documentation for `priority` feature
+* Added screenshots for `sortTasks` and `filterTasks` command
+
+#### **Developer Guide**
+
+* Added documentation for `sortTasks` feature and how it links between different components: Logic, Model and Ui
+* Updated the screenshots to suit SWEe-book
+* Added use cases
+
+### **Community**
+
+* Helped to spot bugs in Practical Examinations - Dry Run (PE-D) See [here](https://github.com/zhenxuantan/ped/issues)
diff --git a/docs/tutorials/AddRemark.md b/docs/tutorials/AddRemark.md
index 8919d8eaa17..df9506ef264 100644
--- a/docs/tutorials/AddRemark.md
+++ b/docs/tutorials/AddRemark.md
@@ -25,7 +25,7 @@ For now, let’s keep `RemarkCommand` as simple as possible and print some outpu
``` java
package seedu.address.logic.commands;
-import seedu.address.model.Model;
+import Model;
/**
* Changes the remark of an existing person in the address book.
@@ -91,7 +91,7 @@ Let’s change `RemarkCommand` to parse input from the user.
We start by modifying the constructor of `RemarkCommand` to accept an `Index` and a `String`. While we are at it, let’s change the error message to echo the values. While this is not a replacement for tests, it is an obvious way to tell if our code is functioning as intended.
``` java
-import static seedu.address.commons.util.CollectionUtil.requireAllNonNull;
+import static CollectionUtil.requireAllNonNull;
//...
public class RemarkCommand extends Command {
//...
@@ -242,7 +242,7 @@ Let’s change `RemarkCommand` and `RemarkCommandParser` to use the new `Remark`
Without getting too deep into `fxml`, let’s go on a 5 minute adventure to get some placeholder text to show up for each person.
-Simply add the following to [`seedu.address.ui.PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-0c6b6abcfac8c205e075294f25e851fe).
+Simply add the following to [`PersonCard`](https://github.com/se-edu/addressbook-level3/commit/850b78879582f38accb05dd20c245963c65ea599#diff-0c6b6abcfac8c205e075294f25e851fe).
**`PersonCard.java`:**
diff --git a/docs/tutorials/TracingCode.md b/docs/tutorials/TracingCode.md
index 4fb62a83ef6..28e57fdb7f8 100644
--- a/docs/tutorials/TracingCode.md
+++ b/docs/tutorials/TracingCode.md
@@ -39,7 +39,7 @@ In our case, we would want to begin the tracing at the very point where the App
-According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `seedu.address.logic.Logic`.
+According to the sequence diagram you saw earlier (and repeated above for reference), the `UI` component yields control to the `Logic` component through a method named `execute`. Searching through the code base for an `execute()` method that belongs to the `Logic` component yields a promising candidate in `Logic`.
@@ -48,7 +48,7 @@ According to the sequence diagram you saw earlier (and repeated above for refere
:bulb: **Intellij Tip:** The ['**Search Everywhere**' feature](https://www.jetbrains.com/help/idea/searching-everywhere.html) can be used here. In particular, the '**Find Symbol**' ('Symbol' here refers to methods, variables, classes etc.) variant of that feature is quite useful here as we are looking for a _method_ named `execute`, not simply the text `execute`.
-A quick look at the `seedu.address.logic.Logic` (an extract given below) confirms that this indeed might be what we’re looking for.
+A quick look at the `Logic` (an extract given below) confirms that this indeed might be what we’re looking for.
```java
public interface Logic {
diff --git a/img.png b/img.png
new file mode 100644
index 00000000000..ea84bfae3bb
Binary files /dev/null and b/img.png differ
diff --git a/src/main/java/seedu/address/logic/parser/AddCommandParser.java b/src/main/java/seedu/address/logic/parser/AddCommandParser.java
deleted file mode 100644
index 3b8bfa035e8..00000000000
--- a/src/main/java/seedu/address/logic/parser/AddCommandParser.java
+++ /dev/null
@@ -1,60 +0,0 @@
-package seedu.address.logic.parser;
-
-import static seedu.address.commons.core.Messages.MESSAGE_INVALID_COMMAND_FORMAT;
-import static seedu.address.logic.parser.CliSyntax.PREFIX_ADDRESS;
-import static seedu.address.logic.parser.CliSyntax.PREFIX_EMAIL;
-import static seedu.address.logic.parser.CliSyntax.PREFIX_NAME;
-import static seedu.address.logic.parser.CliSyntax.PREFIX_PHONE;
-import static seedu.address.logic.parser.CliSyntax.PREFIX_TAG;
-
-import java.util.Set;
-import java.util.stream.Stream;
-
-import seedu.address.logic.commands.AddCommand;
-import seedu.address.logic.parser.exceptions.ParseException;
-import seedu.address.model.person.Address;
-import seedu.address.model.person.Email;
-import seedu.address.model.person.Name;
-import seedu.address.model.person.Person;
-import seedu.address.model.person.Phone;
-import seedu.address.model.tag.Tag;
-
-/**
- * Parses input arguments and creates a new AddCommand object
- */
-public class AddCommandParser implements Parser