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: Add/Delete different kinds of Tags
    • What it does:
      • Allows the user to add and delete different kinds of tags (e.g. Skills TagType tag, Job Type TagType tag, Degree TagType tag, etc.) to a candidate.
      • For example, addTag 2 st/java dt/Bachelors adds a Skill TagType tag java and Degree TagType tag Bachelors to the second candidate in the displayed list of candidates.
    • Justification:
      • This feature improves the product significantly as it allows the user to categorise the information of the candidates as relevant tags and view them in a visually pleasing way.
    • Implementation specifications:
      • In order to keep a track of the different kinds of tags for each candidate, the UniqueTagTypeMap class was created and a field tagTypeMap of reference type UniqueTagTypeMap was added to Person. Moreover, the UniqueTagList class was created in order to keep track of all the tags of a particular TagType of a candidate. The UniqueTagTypeMap internally uses an ObservableMap, backed by a HashMap, that maps each TagType of the candidate to a UniqueTagList of tags.
  • New Feature: Export/Import
    • What it does:
      • Allows the user to export the displayed list of candidates to the specified location as a JSON/CSV file and import the data of candidates from the specified JSON/CSV file.
      • For example, export path//Desktop/sample/data.csv exports the displayed list of candidates to data.csv in the sample directory of the Desktop and import path//Desktop/sample/data.csv imports the list of candidates from data.csv in the sample directory of the Desktop to the addressbook.
    • Justification:
      • This feature improves the product significantly as it allows the user to easily transfer the data of the candidates to another device and import it back in the application in the other device.
    • Implementation specifications:
      • In order to read and write to CSV files, the OpenCSV parser library was used.
      • UI components ExportWindow and ImportWindow were created in order to make the Export and Import process more convenient for the user.
  • Enhancements to existing features:
    • Extended the add command to support the addition of different kinds of tags while adding a candidate.
    • Extended the edit command to support the modification of the existing tags belonging to a candidate.
  • Code contributed: RepoSense link

  • Project management:
  • Contributions beyond the project team:
  • Documentation:
    • User Guide:
      • Added documentation for the different kinds of tag commands.
      • Added documentation for the export and import commands.
    • Developer Guide:
      • Added details for the Use Cases.
      • Added details for the Target User Profile, Value Proposition, and User Stories.
      • Added implementation details and UML diagrams for the Add/Edit/Delete Tags feature.
      • Added implementation details and UML diagrams for the Import/Export feature.