Project: Tuition Address Book

Overview

The Tuition Address Book (TAB) is an all-in-one desktop application for 1-to-1 private home tutors that manages student and lesson information. TAB empowers tutors to provide the best quality home tuition service by making admin tasks a breeze through its powerful management capabilities, organisation tools, smart automation, and great ergonomics.

Summary of Contributions

Code contributed

Enhancements implemented

  • New Feature: Calendar interface (#126, #181)
    • What it does: Allows tuition teachers to use a calendar to keep track of lessons and plan ahead.
    • Justification: This is a core feature for a tuition teacher. TAB cannot be an all-in-one app without it. A huge part of a tutor’s worry is scheduling his/her lessons. Do they have time for a new student? Which days are free and which days are too busy? Without a calendar interface, tutors must use another app, resulting in a decentralised workflow. TAB’s value proposition would be limited. Having a calendar in a CLI application like ours is a game changer as fast typists no longer need to work with GUI bases calendars.
    • Highlights: The calendar interface comes with a day page, week page, month page, and year page, with easy navigation between them. Each CLI command has a button in the GUI for users who prefer clicking, and transitions have satisfying animations. Several shortcuts were introduced to allow users to work with the calendar and their students/lessons seamlessly.
    • Credits: CalendarFX was the library used to display the calendar
  • New Feature: Clashing lessons detection
    • What it does: Detects for clashing lessons and disallows them.
    • Justification: A private home tutor cannot be in two homes at once! This feature prevents important scheduling mistakes for our busy tutors.
    • Highlights: Users cannot add or make edits to a lesson that would lead to schedule clashes.
  • New Feature: Contact fields (#67)
    • What it does: Tracks a student’s phone and email, and their parent’s phone and email. Requires at least one contact detail to add an entry.
    • Justification: An address book entry without a contact is pointless. If you cannot contact your student how do you teach him/her? However, often for tutors, one form of contact is sufficient, so we took that into account as well. Tutors also often communicate with parents, so having a separate field for parent contacts is necessary.
    • Highlights: Contact fields are optional, but TAB smartly recognises when no contact details are provided. Entries must have at least one form of communication!
  • New Feature: Student remarks (#67)
    • What it does: Support managing textual information about a student.
    • Justification: To a tutor, students are their customers. The remark field allows them to use TAB as a Customer Relationship Manager, and is important for TAB to be an all-in-one app.
    • Highlights: No word limits. Tutors can note down whatever they want!
  • Other Enhancements:
    • Allow find command to find students by their lessons, to enable users to quickly find the student and lessons they need to edit (#210).
    • Intelligent parsing of money fields can be difficult due to integer limits, floating point errors, etc. My regex checks figures them out (#67) (inspired by StackOverflow).
    • JavaFX and FXML for toggling between TAB’s multiple interfaces (#126 (inspired by StackOverflow).
    • Accelerators and menu buttons for easy navigation (#202).
    • Selecting a student in the list displays their lessons in the lesson panel, allowing easy browsing (#190).
    • CommandBox automatically focuses when user starts typing a command, greatly increasing speed and productivity drastically improving UX (#202).

Contributions to the User Guide

Contributions to the Developer Guide

Contributions to team-based tasks

  • Set up the Team Repo
  • Set up and maintained Issue Tracker
  • Set up Milestones
  • Updated Gradle (#217, ) and Gemfile (#4)
  • Managed two releases (v1.3 & v1.4)
  • Incorporated CalendarFX library into the product

Community

Tools

  • Integrated a third party library (CalendarFX) to the project (#42)