Project: TimesTable

TimesTable is a Class Management desktop application for tuition teachers to keep track of their students and classes. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 25 kLoC.

Given below are my contributions to the project.

  • New Feature: Added the skeleton of the tabs (Pull request: #73)
    • What it does: Added the base skeleton of the 3 tabs - Students, Classes and Timetable
    • Highlights: I had to implement this before my teammates could start working on their respective tabs. This enhancement was the start of our evolution from the original AB3 into what we have today. It improved the entire UI and allowed us to have multiple tabs which users could view.
  • New Feature: Added the Timetable UI (Pull requests: #81, #97, #114, #136, #138)
    • What it does: Displays the tuition classes of the user in a timetable format in the Timetable Tab, improving the user experience.
    • Justification: The Timetable allows user to see his entire weekly schedule in a glance.
    • Highlights: This enhancement revamped the entire UI of the app. It required an in-depth analysis of all possible design patterns to upgrade the UI. The implementation was challenging as it required addition of many new components to build the entire timetable component.
    • Credits: AY19/20 S2 CS2103-W15-4 Github
  • New Feature: Added the sort feature (Pull requests: #126, #129, #132, #240, #250)
    • What it does: Sorts the students and classes based on the specified parameter in the specified order.
    • Justification: User is able to arrange the list of students and/or classes in the order the user would like. It is also one of the basic features an address book application should have.
    • Highlights: Implementing this sort command was relatively easier than the Timetable UI. However, the challenging part was choosing what parameter to allow the user to sort the students or classes by. The parameters I allowed to be sorted by were the student’s name and the class’ timing, as I believe that these are the two parameters which the user would sort them by the most.
  • New Feature: Added the view feature using Observer Pattern (Pull request: #92, #126)
    • What it does: Opens the tab specified by the user.
    • Justification: This feature was crucial as it tailored our app towards users who do not like using the mouse or voice commands. The user can now switch tabs without the need of a mouse. This feature also played an important role in other commands. The commands related to TuitionClass, such as addToClass, editClass etc used this feature to switch to the Classes tab when they were called. Similarly, commands related to Student, such as add, edit etc used this feature to switch to the Students Tab.
    • Highlights: Implementing this view command required an in-depth analysis of the possible design patterns. I decided to use the Observer pattern here. In this case, the MainWindow implemented the CommandObserver and observed the Commands. CommandObserver#updateView() switches the tab of the Observers to the tab indicated by the user.
  • Code contributed: Reposense

  • Project management:
    • Managed releases v1.3.trial, v1.3(final) and v1.4 on GitHub.
  • Enhancements to existing features:
    • Added the field names to all StudentCard (Pull requests #68)
    • Wrote tests to increase code coverage (Pull requests #81, #92, #126, #136, #240, #255, #256)
  • Documentation:
    • User Guide:
      • Added documentation for the CLASS_TIMING field, and the sort, view and class commands: #29, #146
      • Added command summary for addclass, addtoclass, deleteclass, editclass, findname, findclass, findclassname, findtag, list, listclass, selectclass, sort, view: #146
      • Reordered User Guide to follow the order which the user uses the app to improve the reader’s experience: #150
      • Did cosmetic tweaks to existing documentation of features delete, deleteclass, listclass, editclass, findname, findtag and findclassname: #146
    • Developer Guide:
      • Added target user profile: #25
      • Added UML diagrams and implementation details of the Timetable feature, View feature, Sort feature and Observer feature: #94, #297, #310, #325
      • Improved class diagram of Ui and Logic Component: #297, #310
  • Community: