Project: For Your Interest

ForYourInterest - ForYourInterest is a desktop app for managing members in university clubs/societies, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).

Given below are my contributions to the project.

  • Improved Feature: Modified and improved the add command.
    • Improvement: Allows the user to omit certain details about the added person and only need to provide the name (minimally). Also changed the address detail of the person to telegram handle.
    • Justification: This feature significantly improve the practical usability of the application since sometimes the user does not have all the details about a member. This improvement allows the to add a member with unspecified details, then update the details at a later time (using the edit command). Address was changed to telegram handle to better suit the needs of our target user who will have a greater use for a member’s telegram handle, than for their home address.
    • Highlights: In addition to changing the feature itself, the implementation of this feature required changes to the storage component. Although it was not the main component I was in charge of, I was able to quickly pick up and understand how it worked to make the necessary changes. I also needed to modify existing test cases to ensure that they were applicable to the features.
  • New Feature: Added event modification features (renameEvent command and removePersonFromEvent command).
    • What it does: Allows the user to modify an existing event by changing its name and removing people form the event.
    • Justification: This is a necessary supporting feature for the event feature. Without it, users would have to manually delete the entire event and recreate it from scratch by adding in the correct member, risking data loss due to human error.
  • Code contributed: RepoSense link

  • Project management:
    • Held Zoom meetings for the team’s weekly meetings.
  • Enhancements to existing features:
  • Documentation:
  • Community:
    • PRs reviewed (with non-trivial review comments): #57, #75
  • Extract from UG:
    • Add command in UG:

Adding a person : add

Adds a person to the Interest Group.

Format: add n/NAME [p/PHONE_NUMBER] [t/TELEGRAM_HANDLE] [e/EMAIL] [tag/TAG]

  • Only person’s name must be entered to add the person. All other details are optional.
  • Person added should not have the same name (case-sensitive) as Person that is already in the application.

Examples:

  • add n/Smith p/91234567 t/smith18 tag/TeamCaptain tag/TeamA
  • add n/Xiao Ming p/61234567 t/@xiao_ming e/xiaoming@gmail.com
  • add n/John Doe
  • Extract from DG:
    • Add implemetation in DG:

Add feature (modification of existing feature)

Implementation Details

The add feature is implemented as a command such that it follows the flow of the Logic component as outlined above. The feature was modified to allow the user to omit non-essential details when adding a person (Phone, Telegram, Email, Tag(s)). These changes are reflected in the updated Model Class Diagram. This was done by taking the approach of using a unique unspecified input for omitted details. Through such an approach, the modification to existing code was minimised.

Design Considerations

Aspect: Ensuring that validation regex still valid.

  • Alternative 1 (current choice): Bypass the validation regex check since unspecified input does not require to be checked.
    • Pros: Does not require unnecessary modification of the validation regex.
    • Cons: Requires an additional check for whether it is an unspecified input. This con was mitigated by extracting out the check to ensure code is SLAP and in a single level of abstraction.
  • Alternative 2: Modify validation regex to match unspecified input string.
    • Pros: Does not require the additional lines of code, may be seen as a “cleaner” implementation.
    • Cons: Validation regex would become much more complex and unreadable. Also makes the code less extensible for other developers who may want to change the unspecified input string.