Project: CohortConnect

CohortConnect is an advanced desktop address book which facilitates networking among Computer Science (CS) students. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 15 kLoC.

Given below are my contributions to the project.

  • New Features
    • Add User Profile:
      • Pull request #128
      • What it does: Allows user to create a CohortConnect profile by providing their name, Telegram handle and GitHub username.
      • Justification: Through this feature, the user’s GitHub username can be stored and be utilised by the Find a Buddy feature to extract insights from GitHub metadata and provide recommendations for potential teammates from their contacts.
      • Highlights: Besides providing an entry point for the functioning of the Find a Buddy feature, the implementation of this feature was pretty challenging as it required integration with the Storage, Model, Logic and UI components and the creation of new Storage interfaces and classes to facilitate saving and access of the user profile details independently.
    • Edit User Profile:
      • Pull request #150
      • What it does: Allows user to edit their profile (name, Telegram handle and GitHub username) linked to CohortConnect’s address book.
      • Justification: This feature allows users to keep their own details updated, especially their GitHub username.
      • Highlights: The user’s GitHub username remaining updated is crucial since the GitHub metadata is utilised by the Find a Buddy feature to extract insights and provide recommendations for potential teammates from their contacts.
    • Tag Command
      • Pull requests #256 and #264
      • What it does: Allows user to directly add tags to or remove tags from a specific contact.
      • Justification: Editing a contact’s tags using the edit command causes the new tags to replace the old ones instead of adding onto them and there was no direct way to remove tags from a specified contact. Hence, the Tag command allows users to add or remove tags from a specific contact with ease.
      • Highlights: This feature overcomes the limitation of using the Edit command to edit the tags for a specified contact and enhances user experience.
    • Clickable GitHub Username and Telegram Handle
      • Pull requests #86 and #96
      • What it does: Allows users to directly navigate to their contact’s GitHub profile and Telegram from their contact’s details pane.
      • Justification: Makes navigating to contacts’ GitHub profiles and reaching out to them over Telegram very convenient for the user.
  • Enhancements to existing features:
    • Find feature : implemented find by tag, Telegram handle and GitHub username (Pull requests #41, #64, #97)
    • Tag type : identifies whether the tag is a General, Event or Module tag (Pull request #95 )
  • Testing:
    • Added test cases for the following classes :
      • EditCommandTest (Pull requests #274 )
      • FindCommandTest and FindCommandParserTest (Pull requests #64, #97)
      • TagCommandTest and TagCommandParserTest (Pull requests #264 )
  • Documentation:
    • User Guide:
      • Added documentation for the features find, edit profile and tag (Pull requests #237, #283, #268)
    • Developer Guide:
      • Added implementation details of the find, edit profile and tag features (Pull requests #108, #304)
  • Community:
    • Reported bugs and suggestions for my teammates code (examples: 1, 2, 3)
  • Code contributed : RepoSense link