Project: SEPlendid

SEPlendid is a versatile application used by prospective exchangers to plan their Student Exchange Programme (SEP) study plans. Students from NUS Computing can use this CLI-based application, with a beautiful GUI, to view partner universities and course mappings. The application is also bundled with many other useful features.

Given below are my contributions to the project. For a summary, I am responsible for every feature inside the note section. Every command is coded out and planned out by me.

  • Note Feature High Level Idea

    • Justification: Notes feature is essential in our product because we want the users to be able to keep everything related to their SEP planning in one place.
    • Structure: Each note in our product is equipped with the content of the note and the tags of the note, as well as the index of the note. The tags feature uses the AB3 Tag class where it allows alphanumeric tags with no whitespaces. The content part of the note is built such that it allows alphanumeric and special symbols, such as ., ?, _ and others. The index of the note is used for users to identify the note easily.
  • Command #1: note list

    • What it does: Allows the user to list all notes that they make.
    • Justification: This feature is essential as it allows the user to see all the notes they have made.
    • PR: #141
  • Command #2: note add

    • What it does: Allows user to add note to the system.
    • How it does: User needs to specify the content of the note and the tag of the note. The index will be auto-generated by the system depending on the number of notes they have.
    • PR: #76
  • Command #3: note delete

    • What it does: Allows user to delete note from the system.
    • How it does: User needs to specify the index of the note that will be deleted. The deletion of a note is final and irreversible.
    • PR: #165
  • Command #4: note update

    • What it does: Allows user to update the content of the note in the system.
    • How it does: User needs to specify the index of the note that will be updated. The new content that the user input will overwrite the existing content of the note.
    • PR: #169
  • Command #5: note tag

    • What it does: Allows user to add more tags to the notes in the system.
    • How it does: User needs to specify the index of the note that will be updated. The new tag will be added to the note the user specify. Old tags will remain inside the note.
    • PR: #173
  • Command #6: note cleartag

    • What it does: Allows user to clear all tags to the notes in the system.
    • How it does: User needs to specify the index of the note that will be updated. This command will remove all tags related to the note.
    • PR: #174
  • Command #7: note search

    • What it does: Allows the user to search for notes based on the tags of their notes.
    • Justification: As the user's number of notes grow, the users might want to filter the notes listed based on the tags they give to the notes. This feature allows user to see all their notes based on the tags.
    • How it does: User needs to specify the tag of the note that they want to search. The system will show all notes that have that tag.
    • PR: #144
  • Code contributed: RepoSense link

  • Project management:

    • Make issues for every feature that I need to have and link it to the PRs.
    • Did my fair share of reviewing and merging PRs.
    • Become the mediator in the discussion of deciding the command format as there are disputes among team members.
    • Closed milestone v1.1. Other milestones include ensuring that milestone is closed by the deadline when Cheng Hou is not around.
  • Enhancements to existing features:

    • Add error handling in the existing Tag class.
    • Our team decides to do morphing, which leads to fewer enhancements to the existing features. I am a part of the team that decides on how we should change the codebase to morph.
  • Documentation:

    • User Guide:
      • Added documentation for the note features.
      • PRs: #186, #255
    • Developer Guide:
      • Add use cases in the developer guide for v1.1. PR: #56
      • Add user stores in the developer guide PR: #55
      • Add Architecture, SeplendidLogic component PR: #264
      • Add instructions for manual testing PR: #274
  • Community:

    • Examples PRs reviewed (with non-trivial review comments): #80, #73, #68
    • Contributed to forum discussions: Refer to the forum dashboard and search foraliciamichellew
    • Reported bugs for other teams in the class: PED repo