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. These are my contributions to the application:

New Features

  • Show Command:
    • Pull requests #40 and #65
    • What it does: Allows user to view details of a user using the Show command by the index, name, github username or telegram id.
    • Justification: This feature allows for a clean UI and displaying details of the chosen Student only.
    • Highlights: The implementation too was challenging as it required interconnecting the ModelManager with the PersonListPanel.
  • GitHubUtil Class
    • Pull requests #98
    • What it does: Contains the methods necessary for web scraping GitHub for data.
    • Highlights: This class helps with gathering data on the contacts including Profile Picture, Repository count and Language contributions.
  • Find A Buddy Feature
    • Pull request #137
    • What it does: Allows user to get the top 5 matches based on GitHub similarities.
    • Justification: This feature improves the product significantly because the user will be able to find teammates with similarities.
    • Highlights: This enhancement is central to the app’s use. It required an in-depth analysis of similarity metrics. The implementation too was challenging as it required applying Euclidean Distance, Manhattan Distance and Cosine Similarity.
    • Credits: The distance metrics were researched here
  • LangColorUtil
    • Pull request #248
    • What it does: Helps display common languages to improve testability of the Find A Buddy Feature
    • Highlights: This was challenging since there were lots of languages and manually adding each would be time-consuming. To overcome this, I wrote a Python program to write the Java code to add to each color to the Hashmap, hence automating the process.
    • Credits: The color data was obtained from this source

UI Enhancements

  • Addition of Student Detail Pane
    • Pull request #40
    • Enhanced the UI to make it cleaner and easier to use.
    • Display student details on clicking on a particular student.
  • Addition of Tabs
    • Pull request #91
    • Enhanced the UI/UX by creating tabs for the different features
    • The tabs are Contacts, Favourites, Events and Find A Buddy

Test Cases Written

Wrote test cases fore the following classes

  • Ai class (Pull requests #250 )
  • LangColorUtil class (Pull requests #250 )
  • Show command (Pull requests #253 )
  • SampleDataUtil (Pull requests #254)
  • FindABuddyPredicate (Pull requests #254)
  • Favourite Command (Pull request #255)
  • UnFavourite Command (Pull request #255)

Documentation

  • User Guide:
    • Added the documentation for the features show and FindABuddy (Pull request #265)
  • Developer Guide:
    • Added implementation details of the show command. (Pull request #110)

Code Contributed

The code contributed in this project is available here.