Project: CLInkedIn

CLInkedIn is a desktop address book application made for Recruiting and Hiring Managers. The user interacts with it using a CLI, and it has a GUI created with JavaFX.

Given below are my contributions to the project.

  • New Feature: Create/Edit/Delete TagTypes
    • What it does?
      • CLInkedIn provides the user with 3 basic tag types: Skills, Degree, and Job Type. But if a user wish to add tags of other types they can create their own custom tag types.
      • So using this feature a user can:
        1. Create a new tag type and provide a custom prefix for it. Example: createTagType Grade gpa, where gpa is the prefix for the Grade tag type.
        2. Edit an existing tag type. Example: editTagType Grade-Marks gpa-m, this edits the existing Grade tag type to Marks and its prefix from gpa to m.
        3. Delete an existing tag type. Example: deleteTagType Skills, now Skills tag type will no longer be available for use.
    • Implementation specifications:
      • In order to keep track of the tag types available to the user and their respective prefix a static field prefixMap of Map reference data type is created in the UniqueTagTypeMap class. The prefixMap maps each Prefix for a tag type to its respective TagType. Moreover, to initially provide the user with 3 basic tag types another static field initialTagTypeMap of Map reference data type was created. So when a user runs the application for the first time the prefixMap is initialised with this initialTagTypeMap. Furthermore, to store and retrieve the available tag types from the storage a static variable prefixMap is added to the address book that shares its reference with the prefixMap in the UniqueTagTypeMap and the JsonSerializableAddressBook is also updated for the same.
  • New Feature: Add/Delete Links
    • What it does?
      • A user can now also add/edit/delete links to various social media profiles/other websites to a candidate and can view the webpage by clicking on the icon of the relevant link for a candidate.
      • So using this feature a user can:
        1. Add 1 or more links to a candidate. Example: addLink 1 l/https://instagram.com/username l/https://github.com/username adds the links to person at index 1.
        2. Edit existing links by replacing all existing links with new links. Example: edit 2 l/https://telegram.com.
        3. Delete all links of a candidate. Example: deleteLink 2 deletes all links of person at index 2.
    • Implementation specifications:
      • The Person class has a field that stores a Set of links for the candidate.
      • The parser converts the input for links from String to a valid URL using java library for URL and creates a new instance of Link class for each URL. Then the Link class generates the name of the platform if it is recognised by CLInkedIn, or else as general so that it can display the platform specific icon for the link in the GUI.
      • Furthermore, to store and retrieve the links from the storage, a JsonAdaptedLink class is created that stores the links in String format and while reloading the application converts the String to the required URL type.
  • Enhancements to existing features:
    • Extended the add and edit command to support the newly added Link feature.
  • Code contributed: RepoSense link

  • Project management:
  • Contributions beyond the project team:
  • Documentation:
    • User Guide:
      • Added documentation for the different kinds of tag type and link commands.
      • Updated documentation for note and rate commands, GUI snippets, and command summary.
    • Developer Guide:
      • Added details for the Target User Profile, Value Proposition, User Stories, and Use Cases.
      • Added implementation details for the Tag Type & Link feature.
      • Added CreateTagTypeSequenceDiagram & AddLinkSequenceDiagram UML diagrams.
      • Updated StorageClassDiagram & ModelClassDiagram UML Diagrams.