Project: Track-O

Track-O is a desktop address book application used by private tutors to schedule lessons and track payments. 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.

  • New Feature: Added a level field to Tutee.
    • What it does: Tutors can now save the education level of tutees when adding them to Track-O. When the tutor provides the abbreviation of the education level, Track-O parses it into the full title.
      e.g p4 parses into Primary 4
      e.g s2 parses into Secondary 2
      e.g j1 parses into JC1
    • Justification: We want tutors to be able to recall the current academic progress of a tutee just by looking at the tutee list. Having the information of the education level allows tutors to quickly identify the topics are relevant.
      Instead of creating a completely new field for that, we decided to replace the existing email field with education level because email would not be relevant if tutors are teaching younger tutees in the primary level and do not use email for communication purpose.
    • Highlights: This enhancement affects existing commands such as add and edit as the email field now contains different information and parameter constraints.
    • Credits: -
  • New Feature: Added the ability to delete lessons from a tutee.
    • What it does: the DeleteLessonCommand identifies the lesson to be deleted and removes it from the user’s schedule as well as the lessonlist of the tutee.
    • Justification: Track-O supports adding lesson to individual tutee. If the tutee decides to quit the tuition lesson permanently, the user has the ability to free up his schedule and remove the lesson.
    • Credits: -
  • Code contributed: RepoSense link

  • Project management:
    • Managed the deadline and closure of milestones v1.3 - v1.3b (2 milestones) on GitHub.
    • Set up the About-Us page and took pictures used for the profile of each team member.
  • Enhancements to existing features: Modified the FindCommand to work like a filter.
    • What it does: FindCommand supports keyword search for name, level, subjects and overdue status.
    • Justification: The previous find function returns matched tutee whose name fulfils any of the keyword supplied. However, we felt that the feature is not very helpful for tutors if we wanted to extend it to support level, subject and overdue status as well.
      For example, if the tutor wants to search up all secondary 4 students taking math classes, using find l/p4 subject/math will return tutees who are either primary 4 or tutees taking math classes. The tutor would then have to sieve through the results once again to find the tutee of interest.
      Hence, we modified the implementation to work just like a filter placed sequentially: a matched tutee has to pass all the filters to be returned as a matched tutee.
    • Highlights: This enhancement did not affect existing commands and commands to be added in future, but the old test cases using the old implementation had to be modified to align with our new design of the FindCommand.
    • Credits: -
  • Documentation:
    • User Guide:
      • Added documentation for the features deleteLesson and find.
    • Developer Guide:
      • Added implementation details of the find feature.
  • Community:
  • PRs reviewed (with non-trivial review comments): #39, #74, #155, #159,