Project: SOChedule

Overview

SOChedule is a one-stop solution for managing tasks and events, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).

Summary of contributions

Given below are my contributions to the project.

  • New Feature 1: Mark one or multiple tasks as done, done_task.
    • What it does: It allows the user to mark one or more tasks as completed at a time. If the users need, they can use undone_task to mark the tasks as uncompleted afterwards.
    • Justification: Since our product aims to help users manager their tasks and events. One of the most common needs for the users is to mark the tasks as completed. Very often, they need to do so for more than 1 tasks. As a result, this new feature improves the product significantly as it provides a convenient and efficient way for users to do so with one single command.
    • Highlights: This feature acts as one of the most fundamental and important functions in our products. The implementation too was challenging as it required changes to the Model, UI and Logic component of the application. In-depth analysis of these components are needed.
  • New Feature 2: Mark a completed task as uncompleted, undone_task.

    • What it does: It allows the user to mark a completed task as uncompleted. If the users need, they can use done_task to mark the task as completed afterwards.
    • Justification: Occasionally, users may realize that they made a mistake in completing a task, or certain parts of a completed task is not finished yet. Thus, they may have the need to uncomplete a task rather than deleting it and add the same task again. As a result, this new feature provides a convenient and efficient way to meet our users’ potential needs.
  • New Feature 3: Find tasks and events before or on the given date, find_schedule.

    • What it does: Given a date, it returns users uncompleted tasks that are due before or on the specified date and events that are ongoing given the specified date.
    • Justification: Very often, users may need to know the tasks they have not completed at a specific date. Also, they may wish to know the events happening at this date. Together, this formed a schedule of tasks to complete and events they are involved given a specific date. This new feature acts as a helpful shortcut function that finds the tasks and events that may interest the users the most. This helps to make our product more convenient and efficient to use.
  • Enhancements to existing features:
    • Enhance the function of editing an existing task, Edit task.
      • What it does: Allows users to edit the details of the task at the specified index and updates its respective values with the supplied values. Further restrictions are added to disallow users from editing a completed task. However, users are allowed to edit an overdue task.

      • Justification: In-depth analysis of design alternatives are needed when implementing this command. For overdue tasks, we believe that users may need to edit an overdue task at very frequent occasions. For example, users may wish to extend the deadline of an overdue task, or increasing its priority to remind themselves that this task needs more attention. Thus, we allow overdue tasks to be edited.

    • Contributed to the transition of previous AddressBook3 codebase to current needs, mainly about Logic (Pull requests #87, #89, #90, #118)
  • Testing:
    • Created and developed tests for done_task, undone_task, find_schedule commands and their parsers.
    • Also, helped to develop tests for Logic component, such as SocheduleParserUtil.
    • One of the PRs significantly improved the testing coverage by 5.66%, #344.

Other contributions

  • Code contributed: RepoSense link
  • Documentation:
    • User Guide:
      • Explained the use and constraints on edit_task, done_task, undone_task and find_schedule commands.
      • Updated command summary and added visual illustrations to the relevant commands.
    • Developer Guide:
      • Updated and explained the Model component. Created the class diagrams for Model, Task and Event. Explained the design considerations for comparing same tasks and events and setting maximum length to Name, Tag and Category.
      • Explained the implementation details and design considerations for done_task, undone_task, edit_task and find_schedule. Created sequence diagrams for sample usages of done_task, undone_task, edit_task and find_schedule Created an activity diagram for undone_task command.
      • Added use cases and manual testing cases for done_task, undone_task, edit_task and find_schedule.
      • Contributed to the effort section. Summarised the highlights of the product, and explain the efforts the team in developing the product.
  • Team-related contributions:
  • Community:
    • Contributed to forum discussions: #16, #31, #81, #141, #287.

    • Some of my suggestions have benefited other classmates: #34, #36.