Project: ContactSh

ContactSH is a desktop app for managing contacts, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, ContactSH can get your contact management tasks done faster than traditional GUI apps.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • New Feature: Added the sort command.
    • What it does: Allows the user to sort contacts in alphabetical order and reverse alphabetical order of their names.
    • Justification: With a long list of contacts, the user may often want to view the contact list in a sorted order. Allowing the user to easily sort their contacts in alphabetical order is thus essential.
    • Highlights: This feature required adding a new SortCommand as well as a SortCommandParser. It also required modifying ModelManager to include a SortedList<Person>.
  • New Feature: Added the clear command.
    • What it does: Allows the user to visually clear the contact list and task list in the GUI. Does not delete any contacts nor tasks.
    • Justification: clear is a core functionality in the Unix CLI. It allows the user to clear the screen of all output. It has been extended to ContactSH to allow the user to clear the GUI screen of any clutter that may have resulted from previous commands.
    • Highlights: This feature required adding a new ClearCommand that updates the model. In turn, changes to the model are reflected in the contact list and task list.
  • New Feature: Added the man COMMAND functionality.
    • What it does: Allows the user to directly receive help about the usage and format of a command in the result box of ContactSH instead of in the pop-up help window.
    • Justification: man COMMAND is a core functionality in the Unix CLI. It allows the user to directly view the manual page of commands in the terminal. It has been extended to ContactSH to allow the user to conveniently check the usage and format of commands in the event that they have forgotten them.
    • Highlights: This feature required modifications to HelpCommandParser to detect when a COMMAND was given in the input (else, the help window will be opened). This feature also required modifications to HelpCommand to be able to display the help message for a command in the result box.
  • Enhancement to existing feature: Improved syntax of all commands and flags
    • What it does: Allows the user to enter commands and flags in a syntax similar to the Unix CLI syntax.
    • Justification: Since the target user is familiar with the Unix CLI environment, it would be inconvenient to have to learn a new set of syntax for interacting with ContactSH. Instead, commands have been renamed to be as close as possible to existing Unix commands that have similar functions. Additionally, the syntax for specifying flags have also been modified to reflect the Unix syntax.
    • Highlights: This enhancement required modifications to many Commmands and CommandParsers.
  • Enhancement to existing feature: Improved edit function to allow user to edit contact details and tasks together
    • What it does: Allows the user to edit the details of a contact as well as details of any tasks attached to the contact in one edit command.
    • Justification: There may be times when the user would like to update the detail of a contact as well as the detail of a task attached to that contact. It would be inconvenient for the user to have to input two separate edit commands, the first to edit the person details, and the second to edit the task details. Therefore, the edit command has been improved so that both can be edited in one edit command for a smoother user experience.
    • Highlights: This enhancement required the careful integration of EditCommand and EditTaskCommand into one EditCommand.
  • Documentation:
    • User Guide:
      • Added documentation for the sort feature #26
    • Developer Guide:
      • Added documentation for the improved edit enhancement #211
    • ReadmeMd:
      • Updated to match ContactSh #25