Project: ThunderCat

ThunderCat is a desktop application designed for NUS Year 2 Computer Science students. The application acts as an address book for contacts with added support for groups and group tasks management. The application is optimised for students who can type fast as it uses a Command Line Interface (CLI), while still having the benefits of a Graphical User Interface (GUI).

Given below are my contributions to the project.

  • New Feature: Added the ability to list all groups in ThunderCat.
    • What it does: Allows the User to view all groups.
    • Justification: This feature is essential for User to be able to view all their groups in one display.
  • New Feature: Added the ability to list all group members and tasks in a group.
    • What it does: Allows the User to view group information of each group.
    • Justification: This feature is essential for User to be able to access the list of tasks and group mates in groups they have created.
  • New Feature: Added the ability to add a new task to a group.
    • What it does: Allows the User to add a new task to a group’s task list.
    • Justification: This feature adds functionality to ThunderCat as a task management tool, and not simply an address book of persons and groups.
  • New Feature: Added the ability to mark a task in a group as done.
    • What it does:
      • Allows the User to mark a task in a group as done.
      • Supports the undo function, allowing the User to easily reverse their action.
    • Justification: This feature makes the ‘task’ in ThunderCat much more realistic and increases functionality, allowing the User to keep track of which tasks are done and which tasks are not.
  • Enhancements implemented:
    • Added Task-related exception classes
    • Added UniqueTaskList class that enforces uniqueness between its elements to support Task-related commands in ThunderCat.
      • What it does: This feature allows each group to have their own task list.
      • Highlights: This enhancement affected numerous existing commands. Implementing this enhancement was challenging as it required changes to the Group model which led to numerous changes to other classes that used the Group model. Test cases and data also had to be updated accordingly.
    • Added Task-related classes in test such as TypicalTasks, TaskBuilder and TaskUtil classes to support testing for Task-related features.
    • Added Group-related exception classes
    • Added Group-related class TypicalGroups to support testing for Group-related features.
  • Code contributed: RepoSense link

  • Project management:
    • Managed releases v1.1, v1.2, v.1,3 3 major releases on GitHub.
    • Reviewed pull requests
  • Enhancements to existing features:
    • Added JavaDoc comments to all existing classes and methods in the Model package. #369
    • Wrote additional tests for existing classes such as Config and Version to increase code coverage #306 and #307
    • Wrote tests for all new features implemented.
  • Documentation:
    • User Guide:
      • Added documentation for the feature groups #33
      • Added documentation for the features group , addT and done #182
      • Changed documentation for the help feature #344 and #347
      • Added glossary #196
      • Did cosmetic tweaks to existing documentation of features help, add, groups, list, clear and exit #182
      • Did further cosmetic tweaks based on feedback received #347
    • Developer Guide:
      • Added value proposition #34
      • Added use cases #187
      • Added implementation for MarkAsDoneCommand #362
      • Added implementation for AddTaskCommand #362
      • Added Introduction indicating purpose and target audience #383
  • Team Tasks:
    • Ideated group and product name ‘ThunderCat’
    • Updating user/developer docs: use cases, glossary, value proposition, introduction
    • PRs reviewed (with non-trivial review comments): #193