Project: Socius

Socius is a contact management desktop application used for CS2103T module takers. Socius is a platform to help students find potential project group mates for CS2103T. The user interacts with it using a CLI, and it has a GUI created with JavaFX. Socius is written in Java, and has about 12 kLoC.

Given below are my contributions to the project:

  • Code contributed: Nathan’s Code Contribution
  • New features and enhancements added:

    • Make tag colours customisable(Feature)
      • What it does: Allows the user to customise their tag colour either by colour code or colour name.
      • Justification: This feature improves the aesthetic appeal, and more importantly, the flexibility and customisability, which is what we pride our application in.
      • Highlights: This feature affects existing commands and commands to be added in future. The implementation was somewhat challenging as it required some significant changes to how data would be stored in the JSON file to accomodate the tag colours now that it was customisable. Test cases and test data also have to be updated accordingly.
    • Add the ability to not include additional fields aside from Name when adding a new contact. (Feature)
      • What it does: Allows the user to add a new contact without having to include every field.
      • Justification: We took into consideration the scenario that users might not wish to share certain personal contact details and felt this change was necessary. This feature improves user experience and the flexibility and customisability of our application.
      • Highlights: This enhancement affects existing commands and commands to be added in future. The implementation was tedious, but slightly more straightforward as it required minor adjustments to all existing fields. It also required some adjustments to how data would be stored now that majority of the fields were customisable. Test cases and test data also have to be updated accordingly.
    • Change the GUI to better suit our application. (Enhancement)
      • What it does: Change the colour scheme and layout of the GUI of our application.
      • Justification: This feature allows users a better user experience.
      • Highlights: The implementation of this feature was challenging as it required knowledge of how the GUI works, which meant knowledge of how JavaFX and CSS was integrated into the program.
  • Enhancements to existing features:
    • Added Labels to a contact’s fields in the GUI. (Pull request #346)
  • Contributions to Documentations:

    • README
      • Prepared the initial iterations of the README document (Pull request #32)
    • User Guide (UG)
      • Created the User Guide to fit our product (Pull request #34)
      • General maintenance of User Guide for various releases (Pull request #96, #182
    • Developer Guide (DG)
      • Added Use Cases (Pull request #27)
      • Updated the Appendix, User Stories, Use Cases NFR and other miscellaneous portions (Pull request #275)
      • Added UML diagrams and implementation details for the AddCommand feature (Pull request #95)
  • Contributions to team-based tasks:
    • Helped to create demo screenshots
    • Helped with general UI-related issues
    • Helped with maintaining the User and Developer Guide
    • PRs reviewed (with non-trivial review comments): (Pull requests #90, #54)
  • Reviewing contributions:
  • Other contributions:
    • Reported bugs for other teams: (E.g. #2, #3, #4, #6)
    • Managed 32 issues on GitHub.