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.

  • New Feature: Added the ability to assign Status(blacklist/favourite) users (PR #15)
    • What it does: Allows users to set a status (blacklist/favourite) to any contact. A user is known to be blacklisted/favourited through the UI.
    • Justification: This feature improves the product significantly as users want to know who they should be wary of when thinking about forming groups for their modules.
    • Enhancements: Changed to a graphical representation instead of a text-based representation (PR #47)
    • Credits: Code reuse mainly from Remark’s tutorial.
  • New Feature: Added the ability to filter by users by module code (PR #15)
    • What it does: Allows users to filter their contacts by a module that they are taking
    • Justification: This feature improves the product as we might want to filter our contacts by the modules they are taking, then contact those people in order to form project or study groups with them. It is a separate command from find as they do specifically different things.
    • Highlights: This feature was relatively challenging despite being similar to find command. It required a proper analysis of find in order to understand the inner workings of it, and then following a similar implementation of it.
    • Credits: Main idea of implementing filter is derived from find
  • New Feature: Added the ability to unarchive users from archiveBook, revamped underlying architecture of archive command. (PR #135)
    • What it does: Allows you to archive/unarchive contacts in ModuleMateFinder.
    • Justification: This features improves the product as it allows users to organise their contacts better. For example, they can put all graduate students in archive, and keep them in mind in the event they want to contact them for module feedback.
    • Highlights: Modifications to the underlying architecture (in Model) is necessary to fit another AddressBook, for it be used as archiveBook. Also needed to figure out a way to retrieve which AddressBook was in view.
    • Enhancements: switch was binded to F10 (PR #122)
    • Credits: Credits to Bryan for the base implementation.
  • New Feature: Added GUI, AddWindow for adding a new Person into ModuleMateFinder. (PR #46)
    • What it does: Allows users to add a new contact into ModuleMateFinder.
    • Justification: This feature improves the product significantly as not all users will be familiar with CLI application, or simply do not want to memorise the commands. It provides ease of use, and allows execution of multiple commands by abstracting details.
    • Highlights: Required playing around with JavaFX and SceneBuilder to figure out the best layout.
    • Enhancements: Extended the feature to allow for adding optional fields like Module, Status(PR #72) and Comment(PR #88). Binded the ENTER key to act as a Submit button, when mandatory fields are added. Reset focus on first TextField when window loses focus (PR #102). Extended basic window functionality for EditCommand as well, named EditWindow (PR #81).
    • Credits: Code reuse from HelpWindow, which serves as the baseline for any additional windows.
  • GUI Update: Recoloured GUI, and moved certain fields around. (PR #112)
    • What it does: Makes ModuleMateFinder more distinct and recognisable with a new colour theme.
    • Justification: Less semblance to AddressBook3, so it has a more original feel to it.
  • Code contributed: RepoSense link
  • Project Management:
    • Managed releases for v1.2 and v1.4, as well as demo videos.
    • Set up team repo (CodeCov, GitHub environments) for the team.
    • Set up PR review system for the team.
    • Weekly commits and no deadlines missed.
  • Bugfixes
  • Community
    • Reviewed all PRs done by Julio and Bryan
    • Reviewed most PRs by Wei Ming and Benjamin
      • Non-trivial PRs reviewed and commented on for Wei Ming are: PR #44, PR #78
      • Non-trivial PRs reviewed and commented on for Benjamin are: PR #65 PR #83
  • Documentation:
    • User Guide:
      • Set up overall UG style, Quick Jump (PR #1)
      • Added AddWindow and EditWindow image and functionality (PR #77) (PR #81)
      • Added archive, unarchive, switch explanation and functionality (PR #124)
      • Updated UG according to peer feedback (PR #100)
      • Updated UG according to CS2101 feedback (PR #112)
    • Developer Guide:
      • Add use cases for status and filter (PR #27)
      • Add use cases for archive, unarchive, switch, deletemodules, and clearmodules (PR #203)
      • Reordered use cases to follow the format in the user guide.
      • Updated UML diagram for Ui component and add information regarding the additions (EditWindow, AddWindow), also added an activity diagram, sequence diagram for add (PR #84)
      • Add Appendix: Effort to describe the amount of effort we think is required to make ModuleMateFinder
  • README:
    • Did the mockup UI and the description of ModuleMateFinder here