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)

PROJECT: JitHub - Schedule Management Software

Ui

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:

    • Enhancements to existing features:

      • Updated the GUI for Reminder and Meeting Minutes [#193]

      • Wrote additional tests for existing features [#193]

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 TITLE are allowed but not with the same DATE and START_TIME

  • Only 1 of each field is allowed.

  • TITLE, DATE, START_TIME AGENDA all cannot be blank fields.

  • TITLE and AGENDA accepts any alphanumerical input of any length.

  • DATE must be in DDMMYYYY format, and only numbers will be accepted.

  • START_TIME must be in 24 hours format, cannot exceed 2359 and only numbers will be accepted.

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.

ReminderExample
  • Step 2: On successful addition, the results box will display this message.

ReminderSuccess
  • Step 3: The newly added Reminder will be displayed on the Reminder pane of the UI sidebar, below the Todo pane.

ReminderPane

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:

ReminderClassDiagram

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:

ReminderSequenceDiagram

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 the Todo and Reminder

    • 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 and Reminder 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 and Reminder panes

    • Pros: More space is catered towards both panes, allowing for the display of more information.

    • Cons: Concurrent viewing of Todo and Reminder will not be possible.