Project: SOCket

SOCket is a desktop application for NUS Software Engineering Students to manage the contact information of their peers and professors. The user interacts with it using a CLI, and it has a GUI created with JavaFX.

Given below are my contributions to the project.

  • New Feature: GitHubProfile class to represent the GitHub username of a Person #74
    • What it does: Stores the GitHub username of a Person, and validates the input
    • Justification: Allows the GitHub username of contacts in SOCket to be stored, allowing users to easily retrieve the information needed to find the contact on GitHub
    • Highlights: VALIDATION_REGEX ensures the validity of any input stored as a GitHubProfile (does not guarantee that it exists, only that it is valid)
    • Credits: {Input validation based on form validation from Join GitHub}
  • New Feature: Language class to represent proficiency in a programming language of a Person #75
    • What it does: Stores the programming languages a Person, and validates the input
    • Justification: Allows the programming language proficiencies of contacts in SOCket to be stored, allowing users to easily view the proficiencies of a contact
    • Highlights: Simple input validation using VALIDATION_REGEX (does not guarantee existence of input as a programming language)
    • Credits: {-}
  • New Feature: undo and redo commands #99
    • What it does: Allows users to undo/redo changes
    • Justification: Users are able to revert/restore unintended changes to SOCket
    • Highlights: Stores the states of SOCket to allow for a simple implementation of the undo/redo functionality
    • Credits: {This feature was implemented as proposed in AddressBook-Level3}
  • New Feature: Project class to represent a project (in collaboration with @dillongoh) #130
    • What it does: Allows users to store information about a project, including details regarding the project repository, deadline, and members
    • Justification: Users are able to easily manage and retrieve information regarding the project
    • Highlights: VALIDATION_REGEX and isValid* methods for fields ensure validity of inputs stored in Project instance (does not guarantee that ProjectRepoHost or ProjectRepoName exist, only that they are valid); Project instances are stored in an additional list in the socket.json data file, with its own copies of the Person instances that are members of the Project; references to the Person instances are restored upon reading in the socket.json data file
    • Credits: {-}
  • New Feature: deletepj command to delete existing projects #150
    • What it does: Allows users to delete existing projects
    • Justification: Users are able to remove finished projects from SOCket
    • Highlights: JUnit tests to test command functionality
    • Credits: {-}
  • Code contributed: RepoSense link

  • Project management:
  • Enhancements to existing features:
    • Updated Person class with new fields utilising newly added classes, modify behavior to allow fields to be empty #76
    • Updated edit command to allow Language instances to be added cumulatively, instead of being replaced by new instances #82
    • Converted link in HelpWindow shown by help command into a Hyperlink to allow users to more easily access the user guide #103
    • Refactored code to remove references to AB-3 #116
    • Updated VALIDATION_REGEX, equals in Name to enhance duplicate detection for Person instances #146
    • Updated VALIDATION_REGEX in Tag to limit length #147
  • Documentation:
    • User Guide:
      • Added documentation for the features add and edit #44
      • Did minor tweaks to existing documentation #44
      • Added documentation for the features undo and redo #104
      • Added “Introduction”, “About this User Guide” sections, split “Features” into “General Commands”, “Contact Commands” and “Project Commands” #177
    • Developer Guide:
      • Added documentation for target user profile, value proposition, user stories #53
      • Added use cases UC01, UC02, UC09 #54
      • Updated glossary #55
      • Updated non-functional requirements #56, #184
      • Updated implementation of undo/redo and credit proposed implementation in AB-3 #106
      • Updated existing UML diagrams to reflect changes in implementation of Model and Storage architectures, current implementation of undo and redo, as well as changes from code refactoring #164
      • Added introduction, documentation for implementation of Project feature #184
      • Added use case UC21 #184
      • Added UML sequence diagram to show how updates are made to the associated Project object when updates are made to Person objects #184
      • Updated “Appendix: Instructions for manual testing” with instructions for testing add, edit, deletepj, Saving data #191
      • Added “Appendix: Planned Enhancements” with planned enhancements to validation for Name, Phone and Language fields, as well as enhancements adding overdue checks for ProjectDeadline and ProjectMeeting, and enhancements to allow multiple ProjectMeeting fields for a Project #249, #269
  • Community: