Project: Teacher’s Pet

Teacher’s Pet is a desktop application for managing contacts of students and classes, optimised for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Teacher’s Pet can get your contact and class management tasks done faster than traditional GUI apps.

Given below are my contributions to the project.

  • New Feature:
    • Money data type and relevant fields
      • Money Owed, Money Paid, Rates per Class fields that are essential for tutors to track their income.
    • sort-by command
      • sort the displayed list of students by name, next class date, and amount of money owed in ascending or descending order.
    • undo command
      • undo the change to internal student list by the last command. (with similar but different structure as AB3 suggested)

All above-mentioned features are accompanied by extensive testing

  • Code contributed: RepoSense Link

  • Project management:
    • Main reviewer for code-related Pull Requests;
    • Active contributor of issue tracker;
  • Documentation:
    • User Guide:
      • sort-by command
      • undo command
      • refine overall structure (table of contents, summary table)
    • Developer Guide:
      • sort-by command and corresponding diagram
      • undo command and corresponding diagram (adapted from AB3)
  • Community:
    • Review most of the code-related PRs by the whole group with detailed insights and comments;
      • Some prominent examples: #96, #169, #198, #351;
      • Host mentorship or discussion sessions for whoever needs help;
      • Hold high standard of code quality and enforce this standard in PR review;
      • Spot bugs and request for change during review stage rather than let them slip into code base;
      • Take the initiative to deal with the PRs with most complicated logic that no one would like to look into and provide solid suggestions with clear understanding of the PR’s content.
    • Have the best knowledge about the overall code base and clear idea about current progress of each group members (closely monitor all actions on GitHub by group members);
    • Actively participate in the discussion during weekly meetings, provide concrete suggestions for various topics, and highly involved for workload distribution by being a reliable source for estimating time and difficulty of a task;
    • Add testing for overall project;
    • Share useful tips found by myself in forum to help others. #152, #335, #339