Project: CANdidates

CANdidates is a powerful contact management desktop app optimised for job recruiters to manage job applicants.

The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 25 kLoC.

Given below are my contributions to the project.

  • New Feature: Added the ability to store priority of job listings.
    • What it does: Allows the user to label a job listing by a priority level. It also acts as an optional field, which takes on a default value, moderate.
    • Justification: This feature improves the product significantly as it differentiates the job list from the original AB3, making it significantly personalised for job recruiters to use our application to manage many job listings at once.
    • Highlights: This enhancement affects existing commands and commands to be added subsequently, such as find and sort commands. This enhancement was also challenging as the priority field was optional and had to take on a default value. No other similar implementations exists in the original codebase and a good understanding of the logic flow of the code base is required due to the multitude of classes and method involved.


  • New Feature: Added the ability to store vacancies of job listings.
    • What it does: Allows the user to label a job listing with its number of vacancies.
    • Justification: This feature improves the product significantly as it differentiates the job list from the original AB3, making it significantly personalised for job recruiters to use our application to manage job listings.
    • Highlights: This enhancement affects existing commands and commands to be added subsequently, such as find and sort commands. A good understanding of the logic flow of the code base is required due to the multitude of classes and method involved.


  • New Feature: Added the ability to sort job listings.
    • What it does: Sorts the list of jobs by their job title, company name, priority level or number of vacancies in an ascending or descending order.
    • Justification: This feature improves the product significantly because a user can quickly sort the items with a single command. A well organised and sorted list of jobs makes it easier for the user to view job listings according to various criteria and match suitable candidates to jobs.
    • Highlights: This enhancement is challenging as it is a fresh implementation and no similar implementations exists in the original codebase of AddressBook 3. Thus a good understanding of the logic flow of the code base is required due to the multitude of classes and methods involved.



  • Project management and team-based tasks:
    • Ensured that the testing of the project is done properly and on time.
    • Maintained the issue tracker: Ensured that issues were assigned and tagged appropriately.
    • Various documentation update that are not specific to a feature, mentioned in the documentation section.


  • Enhancements to existing features:
    • Wrote additional tests for existing features to increase coverage. (Pull requests #96, #99, #120, #147, #270, #289)
    • Improve on the information display on the UI (Pull request #168)
    • Fixed sort candidate success message bug (Pull request #222)
    • Add sort by name feature for both candidates and jobs (Pull request #270)
    • Update the application icon on the GUI (Pull request #292)


  • Documentation:
    • README:
      • Updated the README document to solve documentation bugs (Pull request #77)


    • User Guide:
      • Added and updated documentation for the sort features (examples: Pull requests #159, #221)
      • Updated general sections such as Introduction, Preface, Quick Start, FAQ etc. (examples: Pull requests #159, #166, #280)
      • Created new Understanding GUI section (Pull request #278)


    • Developer Guide:
      • Update Architecture section as well as set the new colour scheme for the Developer Guide (examples: Pull requests #125, #132)
      • Update documentation and UML diagram for the Logic component. (Pull request #132)
      • Added documentation and sequence diagram for the list feature. (Pull request #132)
      • Identified the non-functional requirements of the project. (Pull request #75)
      • Updated the glossary. (Pull request #75)
      • Update the Manual Testing section (Pull request #284)


  • Community:
    • Helped to test and report bugs for teammates features (examples: Pull requests #79, #277)
    • Contributed to forum discussions (example: CS2103T Forum Issue #165)
    • Reported bugs and suggestions for other teams in the class (examples: PE-D issues #3, #6, #11)