Project: Uni-Fy

Uni-Fy is a desktop app for managing your university workload and it is designed by university students for university students. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • Creating the Date class #74 #92 #121 #281
    • I refactored the address field in AB3 to the date field of Task in Uni-Fy. Other than the usual name changes, a main thing that required to be changed was the validation regex. It is now changed to accept a proper YYYY-MM-DD format, while accepting only dates from a certain range to match that of recent academic semesters. On top of this validation regex, I also included SimpleDateFormat and LocalDateFormat to check the validity of dates and to parse them respectively. The process was a tedious one, since there were numerous address fields in the whole codebase, and the original app being called ‘addressbook’ did not help.
    • Numerous test cases had to be changed as well, along with the data passed into them since the address field and date field are vastly different
  • Creating the Time class #90
    • I refactored the phone field in AB3 to the time field of Task in Uni-Fy initially. Apart from name changes and minor validation regex edits, the handling and maintenance of the Time class were subsequently passed to another team member
    • Numerous test cases had to be changed as well, along with the data passed into them since the phone field and time field are vastly different
  • Removing the Email class #93
    • I removed the email field in AB3 to suit tasks in Uni-Fy
    • Numerous test cases had to be removed as well, since this class/field is no longer present in the implementation of Uni-Fy
  • Creating the WeeklyPanel #86
    • I created the weekly panel initially, which serves to store and display our daily panels
    • The handling and maintenance of the weekly panel were subsequently passed to another team member, due to his proficiency in handling UI components
  • Creating the DailyPanel #86
    • I created the daily panel initially, which serves to store and display the tasks specific to a day
    • The handling and maintenance of the daily panel were subsequently passed to another team member, due to his proficiency in handling UI components
  • Delete command #194
    • I enhanced the delete command to allow the deletion of multiple tasks simultaneously. Initially, the delete command only accepts a string containing one task number for deletion. It does not support the deletion of multiple tasks at once. In order to make things more efficient, multiple tasks can now be deleted at once such that users will not have to enter the same command a few times over should they decide to repeat the delete command
    • Other than the DeleteCommand class, additional methods were added to the DeleteCommandParser and ParserUtil classes to facilitate this enhancement
    • Numerous test cases had to be edited as well, along with the data passed into them, to facilitate this change. Problems in test cases were difficult to recognise, since ParserUtil now returns a list of indexes instead, and a lack of familiarity with the tests initially made it difficult to properly identify errors.
  • Project management:
    • Updated site-wide settings #12 #20
    • Enabled assertions for our project #148
  • Enhancements to existing features:
    • Updated GUI to center some fields to improve readability and aesthetics #190 #201
  • Documentation:
    • User Guide:
      • Added documentation for the delete feature #13
      • Reordered features to make more chronological sense and tidying up #221
      • Update UG to include missing information (minor edits) #132 #175 #207 #333
    • Developer Guide:
      • Added implementation details of the delete feature #151
      • Update DG to include missing information (minor edits) #14 #320 #328
  • Community:
    • PRs reviewed (with non-trivial review comments): #131 #145 #171 #174 #334 #348
    • Contributed to team discussions: 1
    • Reported bugs and suggestions for other teams in the class: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11