Overview
TutorAid is a useful application created for Tutors, by Tutors. The purpose of our application is to be a all encompassing solution to store information such as notes and reminders. Our product is made for tutors and teaching assistants in NUS. However, we have plans to expand to tutors in general.
TutorAid is a comprehensive solution with complete integration of its features. Some of its features include: tasks, reminders, notes, student profile and earnings. Our features have been tailored to suit the needs of our target audience.
By storing their information in one central location, tutors' workspace can be made more organized. This can help improve productivity and enable a smooth workflow. A clear space is indeed a clear mind.
TutorAid is a Command Line Interface (CLI) based tool that caters to professionals adept at typing. We have recently added more Graphical User Interface (GUI) features to make TutorAid more user friendly and to increase efficiency.
Role
My main role was to prototype and develop the Reminders feature, the Calendar feature and make enhancements to the Graphical User Interface. The following sections illustrate these enhancements in more detail, as well as the relevant documentation I have added to the user and developer guides in relation to these enhancements.
Summary of contributions
-
Major enhancement: added Reminders Feature
-
What it does: allows users to add Reminders. These will then be displayed in a reminders window that will pop up and remind users of urgent tasks.
-
Justification: This feature improves the product significantly because users can be reminded of urgent and important tasks at hand. This will ensure that users have ample time to plan and complete their tasks punctually.
-
Highlights: This feature allows users to create, remove and find Reminders. It required an in-depth analysis of design as it is also linked to the the Tasks feature. Users can create reminders for a specific task when creating said task. This highlights TutorAid’s integration of all features with each other.
-
-
Major enhancement: added Calendar Graphical User Interface
-
What it does: allows users to view their Tasks chronologically. These will be reflected on the Calendar in Calendar View. Calendar View helps users keep track of tasks and plan their schedule better.
-
Justification: This feature improves the product significantly because a user can view their overall schedule. This can help users locate their busy periods and plan accordingly. It will also alert users of what tasks are due and when.
-
Highlights: Calendars have a plethora of benefits: helping users prioritize, stay on task, increase productivity etc. Its implementation required integrating with the Tasks feature to be able to accurately display the Tasks Description and Start Date. Clicking on a date will also bring up the list of tasks due on that particular date.
-
-
Minor enhancement: added delete button for easy deletion of Reminders and Notes.
-
Minor enhancement: added tabs in the Menu Bar for easy changing of tab.
-
Minor enhancement: added a tab status at the bottom right corner for users to know which tab they are viewing.
-
Minor enhancement: improved overall Graphical User Interface such as designing of the Login Page.
-
Code contributed: [All commits] [Code Contributions]
-
Other contributions:
-
Project management:
-
Enhancements to existing features:
-
Documentation:
-
Added detailed implementation documentation for the reminders, calendar and gui feature in User Guide
-
Did cosmetic tweaks to existing contents of the User Guide: #362
-
-
Community:
-
Contributions to the User Guide
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
User Interface
Tab Status
The Tab that you are currently on will be shown on the bottom right corner
Change tab : tab
Change tab to any of the available ones.
Format: change_tab tab/DESTINATION
Examples (All available destinations listed):
-
change_tab tab/earnings
-
change_tab tab/calendar
-
change_tab tab/student_profile
-
change_tab tab/reminders
-
change_tab tab/notepad
-
change_tab tab/task
The user may alternatively choose to change tab by using the Items on the Menu Bar.
Delete Button
Delete Button for Reminders and Notes for quick and easy removal of Reminder or Note.
Reminders
Add Reminder
Adds reminders.
Reminders must be unique and cannot have the same DESCRIPTION
Format: add_reminder rd/DESCRIPTION rt/START_TIME, END_TIME
A Reminder can have more than one time slots. |
Examples:
-
add_reminder rd/CS2103T Homework rt/13/10/2019 13:00, 13/10/2019 15:00
Delete Reminder
Removes the reminder.
Format: delete_reminder INDEX
Examples:
-
delete_reminder 1
Reminders can also be deleted easily by clicking the delete button
Finding Reminders based on Description : find_reminder_by_description
Find specific reminders by description and list them.
Format: find_reminder_by_description DESCRIPTION …
Examples:
-
find_reminder_by_description CS2103T
-
find_reminder_by_description CS2103T, cs2100
Finding Reminders based on Date : find_reminder_by_date
Find specific reminders by date and list them.
Format: find_reminder_by_date DATE …
Examples:
-
find_reminder_by_date 13/10/2019
Listing all reminders : list_reminder
List all reminders.
Format: list_reminder
Reminder Window
The Reminder Window will pop up when Tutoraid is first loaded up.
It will list all the Reminders at hand.
Calendar View
Views the Task in Calendar View
Clicking on a date will show the user the Tasks with that date as its Start Time in normal list view. The Calendar will display the tasks starting on that date and the amount of tasks starting on that date. If there is a Task starting on that date, only the Task’s DESCRIPTION and START_TIME will be displayed on the calendar.
|
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |
Reminder Features
Add Reminder
The add_reminder
command allows for tutors to add their reminders into TutorAid.
The format for the add_reminder
command is as follows:
add_reminder rd/<DESCRIPTION rt/<TIME>
Overview
The add claim add_reminder
mechanism is facilitated by addReminderCommand
and addReminderParser
, taking in the
following input from the user: Description
, Time
, which will construct Reminder
objects.
The lifeline for AddReminderParser should end at the destroy marker (X) but due to a limitation of PlantUML, the lifeline reaches the end of diagram.
|
The addReminderCommand
implements Parser
with the following operation:
-
addReminderParser#parse()
- This operation will take in aString
input from the user and create individual objects based on the prefixesrd/
andrt/
. TheString
value after the respective prefixes will create the respective objects. A validation check will be done to ensure that the strings that are entered by the user is entered correctly. If any of the strings entered are invalid, an error will be shown to the user to enter the correct format of the respective objects.-
description
would useParserUtil#parseReminderDescription()
to ensure that the description typed by the user is in the correct format. -
time
would useParserUtil#parseReminderTime()
to ensure that the content is in the correct format.
-
-
After validation of the individual objects, a
Reminder
object would be created with the parametersdescription
andtime
. -
addReminderParser
would then return aaddReminderCommand
object with the parameter,Reminder
object.
The following activity diagram summarizes what happens when a user executes a new command. Example Scenerio
-
Step 1: The user enters
add_reminder rd/teach rt/23/01/2019 13:00, 23/01/2019 15:00
to add a reminder for teaching classes. -
Step 2:
LogicManager
would useTutorAidParser#parse()
to parse input from the user. -
Step 3:
TutorAidParser
would match the command word given by the user with the correct command. In this example, the given command isadd_reminder
, thus,addReminderParser
object would be created with the user’s input. -
Step 4:
addReminderParser
performs a validation check on each of the respective objects throughaddReminderParser#parse()
. In this case, it would useParserUtil#parseReminderDescription()
andParserUtil#parseReminderTime()
. It would then return aaddReminderCommand
object with aReminder
object. -
Step 5:
LogicManager
would executeaddReminderCommand#execute
. In this particular method, theReminder
object will be check with the rest of the priorReminder
object, to ensure that there is no duplicateReminder
object. If there are no similarReminder
object with the same parameters created previously, it would then be added into the reminder list. -
Step 6:
addReminderCommand
would then return aCommandResult
toLogicManager
, which would show the user that the newReminder
object have been successfully added.
Delete Reminders
This command allows the user to delete reminders from the existing reminders list through its index.
The delete reminders command is facilitated by the DeleteReminderCommand
and DeleteReminderParser
.
The delete reminder command is part of the logic component of our application. It interacts with the model component of our software application.
Overview
The DeleteReminderParser
implements Parser
with the following operation:
-
DeleteReminderParser#parse()
- This operation will take in anint
input from the user, that the user wants to delete, which will correspond to the index shown on the reminders list on the application. This will delete the reminders in the reminders list. If an invalid format is entered or an invalid index is entered, there will be a prompt from the commmand parser.
Current Implementation
The delete earnings command is executed by the DeleteReminderCommand
. Currently, the deletion of any earnings is done based
on the INDEX
of the reminders entry.
During the design of our delete reminders function, we considered between two alternatives.
Example Scenerio
-
Step 1: The user enters
delete_reminder 1
to delete a reminder with index 1. -
Step 2:
LogicManager
would useTutorAidParser#parse()
to parse input from the user. -
Step 3:
TutorAidParser
would match the command word given by the user with the correct command. In this example, the given command isdelete_reminder
, thus,deleteReminderParser
object would be created with the user’s input. -
Step 4:
deleteReminderParser
performs a validation check on each of the respective objects throughdeleteReminderParser#parse()
. -
Step 5:
LogicManager
would executedeleteReminderCommand#execute
. In this particular method, theReminder
object will be of that index will be deleted from the current unique filtered reminder list. -
Step 6:
deleteReminderCommand
would then return aCommandResult
toLogicManager
, which would show the user that the new reminder list.
Tab Change feature
Tab Change feature is a type of Command that allows users to change to respective windows for using different features in the system. Tab change function is implemented in using both CLI and GUI. User can execute tab change by typing command in the command box or by interaction with the GUI component (Menu Bar)
Adding a reminder
-
Add a reminder and list all reminders out with the added reminder.
-
Test case:
add_reminder rd/CS2103T rt/13/09/2019 13:00, 20/09/2019 16:00
Expected: A Reminder with Class Id "CS2103T" and Task Time "13/09/2019 13:00, 20/09/2019 16:00" was added to the reminder list. Details of the added reminder shown in the status message. Reminder list shown in Main window. -
Test case:
add_reminder
Expected: No reminder is added. Error details and correct format shown in the status message. -
Other incorrect command format to try:
add_reminder reminder
,add_reminder rd/error rt/20/9/2019 13:00, 21/9/2019 15:00
-
Reminder: Reminders with duplicate
description
cannot be created.
-