About me
I am a team member of the JitHub developer team, in-charge of managing the documentations and implementing the Reminder feature (Major enhancement). I also attempted to work on natural language processing and Remark command (Minor enhancement)
Overview
JitHub is an addressbook application that allows you to quickly navigate the GUI with efficient CLI (Command Line Interface) commands. JitHub also allows you to input your timetables and compare them with yours peers on the Calendar GUI, for easier scheduling of meetings. Coded in Java, JitHub has excellent portability and can be run on any device installed with Java RunTime Environment.
Summary of contributions
-
Major enhancement: Added a Reminder Command
-
What it does: The Reminder feature automatically stores and displays an upcoming meeting’s details on the GUI. Multiple reminders can be set for different meetings, and can be viewed in a scrolling panel at the side of the application.
-
Justification: The Reminder feature complements the user experience of JitHub significantly. By displaying meeting details on the GUI, it reduces the risk of users forgetting about their meetings, especially if their schedules are packed.
-
Highlights: This enhancement affects existing commands and taught me how to manage multiple classes that constitute a command, as well as how to enable my command to interact with the UI component. The greatest challenge
-
-
Code contributed: [Reposense]
-
Other contributions:
-
Project Management: I was in-charge of documentation and managed releases V1.1 to V1.4 on GitHub with the rest of my team
-
Feature: I attempted to add natural language processing to the Command Line Interface as my initial Major Enhancement.
-
What it does: The Natural Language Processing allows users to input their commands in any order and it will still be recognised by the parser.
-
What went wrong: I could not fix the many edge cases that caused my tests to fail, and also I realised that
ArgMultiMap
was already doing a large part of what I attempted and hence decided to change my feature at Milestone V1.3. -
Highlights: I’ve learnt about how to account for multiple edge cases and work my code around them so as to make it more universal.
-
Code contributed:
-
V1.1 [Non-functional code]
-
V1.2 [Non-functional code]
-
-
-
Enhancements to existing features:
-
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. |
Add Reminder: reminder
Adds a reminder for your next meeting, containing details like the title, date, time and agenda of the meeting.
Format: reminder tt/TITLE d/DATE(DDMMYYYY) st/START_TIME ag/AGENDA
Reminders with the same |
Examples:
-
reminder tt/CS2113T Meeting d/03112018 st/1900 ag/Milestone 1.4
-
The following sequence of images illustrate how the example
ReminderCommand
is executed in JitHub.-
Step 1: User inputs command in Jithub’s command box.
-
-
Step 2: On successful addition, the results box will display this message.
-
Step 3: The newly added
Reminder
will be displayed on theReminder
pane of theUI
sidebar, below theTodo
pane.
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 Feature
Add a reminder to notify users of an upcoming meeting.
Current Implementation
The reminder mechanism is facilitated by the ReminderCommand
, which extends Command
, from the Logic
component. A Reminder
object is instantiated and each Reminder
object consists of Title
, Date
, Time
and Agenda
objects.
The following diagram illustrates the Reminder class:
Given below is an example usage scenario of how the reminder mechanism behaves at each step.
Step 1. A student launches the application for the first time and types in a valid reminder command into the CommandBox Pane.
Step 2. The command will be parsed into the AddressBookParser
class.
Step 3. AddressBookParser recognises the command word reminder
and parses the remaining arguments into ReminderCommandParser
.
Step 4. ReminderCommandParser
checks for the validity of the title
, date
, time
and agenda
parameters.
Step 5. If the parameters are valid, addReminder()
in the Model
component updates the VersionedAddressBook
with the new Reminder
.
Step 6. This exposes an unmodifiable ObservableList<Reminder>
that the ReminderListPane
in the UI
is bound to, automatically updating itself upon the addition of the new Reminder
.
The following diagram illustrates how the ReminderCommand
operation interactions with the Logic
and Model
components:
Design Considerations
Aspect: Checking for duplications of reminders
-
Alternative 1 (current choice):
isSameReminder
-
Pros: Easy to implement and write the test as it checks for all the parameters of a reminder.
-
Cons: This implementation may store too many similiar reminders.
-
Aspect: Too many UI Windows
-
Alternative 1 (current choice): Implementing a
VBox
to split theTodo
andReminder
-
Pros: This makes the 2 panes take up only half the size of normal panes, reducing the clutter on the screen. Since there isn’t a need for too many
Todo
andReminder
to be displayed concurrently, a small pane is useable. Furthermore, the individual panes are also scrollable and resizeable. -
Cons: This results in a smaller pane for each component, which may cause them to be overlooked.
-
-
Alternative 2: A command to switch between the
Todo
andReminder
panes-
Pros: More space is catered towards both panes, allowing for the display of more information.
-
Cons: Concurrent viewing of
Todo
andReminder
will not be possible.
-