Chee Erynne's Project Portfolio Page
Project: HEY MATEz
HEY MATEz is a desktop application to get rid of your woes by allowing you to track members and tasks within a club efficiently and easily! It is a Command Line Interface (CLI) application which handles user requests that are typed into the input box as commands and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project.
- New Feature: Added the ability to assign members to a task. (Pull Requests: #161, #163)
- What it does: Allows the user to assign members and edit assignees to a task.
- Justification: This feature improves the product significantly as a user can conveniently track which members are assigned to a task. Also, users can easily modify the assignees to a task should there be any changes in the assignment of a task.
- Highlights: The implementation was challenging as I had to check whether the specified member’s name exists in the members’ list before allowing assignment to a task. I decided to implement an Assignee class, along with a checkAssignees method within the ModelManager class. The checkAssignees method checks the validity of the specified member’s name by calling the hasPerson method within the ModelManager class. With the checkAssignees method, I was able to check the validity of the specified names while not creating any unnecessary dependency between the Task and Person classes.
- New Feature: Added the ability to find tasks with keywords. (Pull Requests: #133)
- What it does: Allows the user to find all tasks which contain any of the specified keywords in its title or description.
- Justification: This feature improves the product significantly because a user can easily filter and find tasks based on specific keywords. With this easy filtering, there is no need for users to scroll through the entire list just to find a specific task.
- Highlights: The implementation was challenging as I had to check through the title and description fields of all the tasks in the task list. I decided to implement a predicate, TaskContainsKeywordPredicate, which compares the title and description of a task to the list of keywords specified. The task list is then updated with the predicate, displaying tasks whose title or description contain any of the specified keywords.
- New Feature: Added the ability to find members with keywords. (Pull Requests: #130)
- What it does: Allows the user to find all members whose name, phone number, email or role contain any of the specified keywords.
- Justification: This feature improves the product significantly because a user can easily filter and find members based on specific keywords. With this easy filtering, there is no need for users to scroll through the entire list just to find a specific member.
- Highlights: The implementation was challenging as I had to check through all the fields of the members in the list. I decided to implement a predicate, DetailsContainsKeywordsPredicate, which compares all the fields of a member to the list of keywords specified. The members list is then updated with the predicate, displaying members whose details contain any of the specified keywords.
- New Feature: Added the ability to clear all members assigned to a task. (Pull Requests: #163, #174)
- What it does: Allows the user to clear all members assigned to a task.
- Justification: This feature improves the product significantly because should the user accidentally assigned a task to the wrong group of members, the user can easily clear all members assigned to the task instead of removing one member at a time.
- Highlights: The implementation was challenging as I had to create a copy of the task at the given index and update the assignees field accordingly, before updating the task list with the updated task copy.
-
Code contributed: RepoSense link
- Project management:
- Created issues
- Managed milestones and issues
- Enhancements to existing features:
- Documentation:
- User Guide:
- Developer Guide:
- Updated the Storage UML Diagram in the DG. (Pull Requests: #191, #273)
- Added implementation explanation for
clearAssignees
command. (Pull Requests: #191, #291) - Added and updated use cases in the Developer Guide. (Pull Requests: #143, #171)
- Added manual testing instructions for various commands. (Pull Requests: #284)
- Community: