Project: ModuleMateFinder

ModuleMateFinder is a desktop address-book-like application used to keep track of your friends’ contacts, as well as the modules they are taking. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java. Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • New Feature: Added the ability to sort persons by specified fields in Person. #44
    • What it does: Allows the user to sort all Person by specified fields and specify ascending or descending order.
    • Justification: This feature improves the product significantly because a user can order persons based on what their needs. e.g. sort by status to track people by their status.
    • Highlights: This enhancement affects existing attributes of persons to be added in future. It required an in-depth analysis of design alternatives. It also required a design that made it easily extendable for fields of Person if more were to be added.
    • Credits: Syntax inspired by SQL language.
  • New Feature: Added the ability to copy details based on specified fields. #78
    • What it does: Allows the user to copy information from an individual Person or all Person, and specify format.
    • Justification: This feature improves the product as user might want to copy and paste information from ModuleMateFinder. e.g. User can transfer information to an excel file using csv format.
    • Highlights Difficulty in implementing each format, especially the json format since the command allowed user to choose variable fields for person to copy, while existing JsonAdaptedPerson required all fields to be displayed.
  • New Feature: Added delete modules command. #16
    • What it does: Allows the user to delete modules by specifying the module name.
    • Justification: This feature allows user to remove specified modules for a specific person.
  • New Feature: Added clear modules command. #16
    • What it does: Allows the user to clear all modules taken by a person.
    • Justification: Clear all modules taken by a person so user does not have to delete each module individually.
  • Enhancement: Refactor archive feature. #195
    • What it does: Refactor archive feature to ensure clearer separation between Logic and Model. Shifted archive command logic from UI back into Logic and ArchiveCommand
    • Justification: This reduces coupling and increases code quality. Previous implementation drifted from architecture without clear separation between UI, Logic, Storage and Model components.
  • Bug Fix: Fix bugs resulting from undo/redo and archive. #195
    • What it does: Fixed implementation of undo/redo to store ArchiveBook as well in order to account for archive.
  • Documentation:
    • User Guide:
      • Added documentation for features deletemodules and clearmodules #17.
      • Added documentation for the features sort #44 and copy #78
      • Added documentation for undo to reflect commands that can be undone but were not included. #195
      • Fixed broken links #105.
    • Developer Guide:
      • Added implementation details of the sort feature #86.
      • Added sort sequence diagram #86 and terms in glossary.#44
      • Updated Model and Storage class diagram to reflect archived AddressBook #195

Community:

  • Reviewed all PRs done by WeiJie and Julio.
    • PRs reviewed for Julio (with non-trivial review comments):
    • PRs reviewed for WeiJie (with non-trivial review comments):
  • Helping team members with bugs.
    • Helped Bryan solve issue with switching between Archive and AddressBook, for both Model and Storage component.
      • #116 Commit 5bb54ed
    • Helped WeiJie solve find source of failing tests.
      • #124 Commit 7c11303, #135 Commit 45c9683
    • Helped Julio with developer guide bugs.
      • #218 Commit 978f666, Commit 69ad65c, Commit d9335e8