PROJECT: Tuition Connect (TC)


Overview

TuitionConnect is a desktop address book application used by private tuition teacher.

TuitionConnect aims to help the tutors to manage their busy schedule more efficiently and effectively.

TuitionConnect has many functionality catered to the tutors - adding and deleting a tutee, creating a schedule, rescheduling and many more.

The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 20 kLoC.

Summary of contributions

  • Major enhancement: Integrated a new Task class into the application

    • What it does: The addressbook application is now able to interact, in various ways, with the newly created task object. In doing so, tutors are capable of generating and manipulating their various appointments at will. This enhancment inclues the ability to store the task object in the addressbook.

    • Justification: This feature forms the foundation of the application as the app is based on a tutor’s ability to create and interact with a task object in an addressbook environemnt.

    • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to almost every aspect of the codebase.

    • Credits: While no outside code was used, it was useful to look over how the Person class interacted with the addressbook and see how that can be adjusted to allow the pre-existing codebase to accomodate the Task object.

  • Minor enhancement: added a listTask command that allows the user to view all tasks stored in the addressbook.

  • Code contributed: [Functional code] [Test code]

  • Other contributions:

    • Project management:

      • Managed releases v1.2 - v1.4 (3 releases) on GitHub

    • Enhancements to existing features:

      • Wrote additional tests for existing features (#68, #140)

    • Documentation:

      • Did cosmetic tweaks to existing contents of the User Guide: #68

      • Updated Developer Guide to explain features: #68

    • Community:

      • PRs reviewed (with non-trivial review comments): #128

Contributions to the User Guide

Listing all tasks : listtask

Shows a list of all tasks in the task list.
Using Command Word:
Format: listtask
Using Command Alias:
Format: lt
The purpose of the listtask command is to regenerate
the complete list of tasks for a user in the event that
only a specific set of tasks were displayed.

Contributions to the Developer Guide

  1. Integrating the Task class into the Addressbook [Major Enhancement]

The Task class forms the foundation of TuitionConnect as it allows the user to manage their various "tasks". The task class comes in two forms, a personal task and a tuition task. The following is the interface:

public interface Task {
    // Consider changing the location of the three string values below

    String MESSAGE_DESCRIPTION_CONSTRAINTS = "Tasks Should have a non-empty description";

    String MESSAGE_DURATION_CONSTRAINTS = "Duration must be a non-null value";

    String MESSAGE_DATETIME_CONSTRAINTS = "Date and time must be a non-null value";

    LocalDateTime getTaskDateTime();

    String getStringTaskDateTime();

    String getDescription();

    String getDuration();

    Entry getEntry();
}

Below is a representation of the Task object. The form below is as an XmlAdaptedTask object which allows the information contained in a Task object to be represented in a certain format. Note that while the Task object has a Tuition Task and a Personal Task variant, the XmlAdaptedTask object represented below embodies both aspects. Moreover, the XmlAdaptedTask consists of String objects only, as opposed to the methods and variables of various types that populate the Task interface above.

taskStorage
  1. listTask Command [Minor Enhancement]

This feature allows the user to see all tasks stored in the addressbook. It is useful when a user has entered a command that displays only a single task. If the user then wants to see other tasks, he/she can input listTask and display the tasks again.