Project: TutorBuddy

TutorBuddy is a desktop application made for freelance tutors who give one-to-one tuition to efficiently manage their students’ contacts, provide a quick overview of scheduled tuition sessions, and handle monthly tuition fees calculation. TutorBuddy is also optimized for fast typing users to handle their day-to-day administrative responsibilities effectively.

Summary of Contributions

Given below is a summary of my contributions to the development of TutorBuddy.

Major Enhancement:

  • Getting the current month and previous 2 months monthly fees.
    • What it does: This feature calculates the current month, and the previous 2 months expected monthly fee based on existing sessions and recurring sessions. We then display the results on the UI accordingly.
    • Highlights: Calculation are performed in a separate FeeUtil class. It performs the calculation using a loop and takes into account whether the sessions are individual sessions or recurring sessions. As the monthly fees are expected to show up in the UI, I had to create a list panel, and a card fxml file that represents the monthly fee. A student list’s listener was added, to enforce accuracy, even when the student list was updated.
    • Related PR: PR #118 and PR #145.
  • Feature to get a particular student’s monthly fee.
    • What it does: Fee command to calculate the monthly fee of a particular student in a specific month and year and return the value to the user.
    • Highlights: This feature makes use of the methods in FeeUtil to calculate the fees for a particular student. As this is a command based query, I would have to first create GetMonthlyFeeCommand class that executes the command, and a parser method for the command. New prefixes are defined, and the Month and Year class was created to enforce our project constraints.
    • Related PR: PR #254, PR #118 and PR #145.
  • Refactor the person class from AB3 to the student class and enhance the fields taken to be representative of a student class instead.
    • What it does: Refactor the person class from AB3 to the student class and enhance the fields taken to be representative of a student class instead.
    • Highlights: I made use of Intellij to help me with refactoring the application. However, as the code base was large, it was difficult to made changes to the application and ensure that the entire application still works as expected. I had to do small adjustments at a time and consistently check that the test cases still works. This has allowed me to explore all the different components of the application such as storage, model and logic.
    • Related PR: Successful refactor PR #34 and PR #153.

Minor Enhancement:

  • Added checks to ensure that start time + duration does not exceed the day itself PR #176.
  • Combining list_student and list_session command to list command PR #167.
  • Updating sample data to include sample sessions as well to better reflect our current application PR #166.

Other Contribution:

  • Testing:
    • Written test for many of the classes such as Month, Fee, GetMonthlyFeeCommand and GetMonthlyFeeCommandParser.
    • Non-trivial testing PR includes: PR #128, PR #165, PR #271
  • Documentation:
    • User Guide:
      • Added explanation for the Fee command PR #85, PR #254 and PR #255.
      • Added help and clear command explanation PR #120.
      • Added tips for overlapping session and find_student command PR #120.
      • Updated find_student description PR #70.
      • Added the screenshots of student commands, fees and sample data PR #311.
      • Improved overall user guide quality based on comments PR #273 and PR #302.
    • Developers Guide:
      • Added implementation details for the add_student command with the appropriate activity diagram PR #93 and PR #308.
      • Updated the application value proposition and use cases PR #19, PR #270 and PR #279.
      • Updated implementation details for students and fee command PR #274.
  • RepoSense Link