PROJECT: NOVA

Overview

This portfolio is a summary of my contributions to Project NOVA.

NOVA is a desktop application that acts as a one stop study aid platform, intended to help CS2103T students with event planning, managing schedules and tracking of their projects.

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

Summary of contributions

This section shows a summary of my coding, documentation and other contributions to the project.

  • Major enhancement: I added the ability to add events, namely consultations, meetings, study sessions and lessons.

    • What it does: Allows user to add events to their schedule.

    • Justification: This enables the user to keep track of the various events they have to attend.

    • Highlights: It was necessary to ensure that the user did not add an event with the same date and time slot as an already existing event. Hence, implementation of the adding of events had to be done carefully. The events also had to be sorted in chronological order.

    • Credits: The parsing of the commands made use of the Address Book 3 code with some modifications.

  • Minor enhancement: I added the ability to delete events.

    • What it does: Allows user to delete events from their schedule.

    • Justification: This enables the user to remove any events that they no longer wish to have.

    • Credits: The parsing of the command made use of the Address Book 3 code with some modifications.

  • Minor enhancement: I added the ability to add notes to events.

    • What it does: Allows user to add notes to specific events in their schedule.

    • Justification: This enables the user to take down any important details e.g. significant points made in meetings so that they do not forget them.

    • Credits: The parsing of the command made use of the Address Book 3 code with some modifications.

  • Code contributed: Please click these links to see samples of my code: Code Dashboard

  • Other contributions:

    • Project management:

      • Acted as the secondary maintainer - helped to maintain the team repository and facilitated merging of Pull Requests from Week 11 to 13.

    • Enhancements to existing features:

      • Updated the GUI layout to make the panels aligned (#344)

    • Documentation:

      • Helped to enable auto-publishing of documentation on GitHub Pages via Travis.

      • Updated Contact Us page. (#8)

      • Updated Logic Component of Developer Guide, as mentioned below.

    • Community:

      • Pull Request reviewed with non-trivial comments (#298)

      • Reported bugs and gave suggestions for other teams (1, 2, 3, 4)

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 a Meeting: meeting(Chua Huixian)

You can add a meeting as one of your events. If there is already an event in the time slot, NOVA will inform you.

Format: meeting d\[description] v\[venue] t\[YYYY-MM-DD] [Start time (HH:MM)] [End time (HH:MM)]

  • The [End time (HH:MM)] must be later than the [Start time (HH:MM)].

  • Events cannot span across more than a day (00:00 is the start of a day, 23:59 is the end of a day).

  • You can only add meetings to dates that fall within the semester.

  • All prefixes (i.e. d\, v\ and t\) must be present.

  • [description] and/or [venue] can be left as blank spaces if you wish (i.e. " ").

Example:
Suppose you wish to add a project meeting into your schedule, which is from 2pm to 3pm on 20 Feb 2020,

enter the command: meeting d\CS2103T website set-up v\COM1 t\2020-02-20 14:00 15:00

NOVA will create an event for a team meeting at COM1 on 20 Feb 2020 to set up CS2103T website from 2pm to 3pm.

EventMeeting

Fig 5.3.1: Display message after entering
meeting d\CS2103T website set-up v\COM1 t\2020-02-20 14:00 15:00

Add a Study Session: study (Chua Huixian)

You can add a study session as one of your events. If there is already an event in the time slot, NOVA will inform you.

Format: study d\[description] v\[venue] t\[YYYY-MM-DD] [Start time (HH:MM)] [End time (HH:MM)]

  • The [End time (HH:MM)] must be later than the [Start time (HH:MM)].

  • Events cannot span across more than a day (00:00 is the start of a day, 23:59 is the end of a day).

  • You can only add study sessions to dates that fall within the semester.

  • All prefixes (i.e. d\, v\ and t\) must be present.

  • [description] and/or [venue] can be left as blank spaces if you wish (i.e. " ").

Example:
Suppose you wish to add a group study session from 4pm to 5pm on 20 Feb 2020,

enter the command: study d\cool peeps revision v\COM1 t\2020-02-20 16:00 17:00

NOVA will create an event for study session at COM1 on 20 Feb 2020 from 4pm to 5pm.

EventStudy

Fig 5.3.2: Display message after entering
study d\cool peeps revision v\COM1 t\2020-02-20 16:00 17:00

Add a Consultation Session: consultation (Chua Huixian)

You can add a consultation session as one of your events. If there is already an event in the time slot, NOVA will inform you.

Format: consultation d\[description] v\[venue] t\[YYYY-MM-DD] [Start time (HH:MM)] [End time (HH:MM)]

  • The [End time (HH:MM)] must be later than the [Start time (HH:MM)].

  • Events cannot span across more than a day (00:00 is the start of a day, 23:59 is the end of a day).

  • You can only add consultation sessions to dates that fall within the semester.

  • All prefixes (i.e. d\, v\ and t\) must be present.

  • [description] and/or [venue] can be left as blank spaces if you wish (i.e. " ").

Example:
Suppose you wish to add a consultation session from 3pm to 4pm on 20 Feb 2020,

enter the command: consultation d\clarify UML v\COM1 t\2020-02-20 15:00 16:00

NOVA will create an event for consultation at COM1 on 20 Feb 2020 to clarify UML from 3pm to 4pm.

EventConsultation

Fig 5.3.3: Display message after entering
consultation d\clarify UML v\COM1 t\2020-02-20 15:00 16:00

Add a Lesson: lesson (Chua Huixian)

You can add weekly lessons as one of your events. If there is already an event in the time slot, NOVA will inform you.

Format: lesson d\[description] v\[venue] t\[day] [Start time (HH:MM)] [End time (HH:MM)]

  • The [End time (HH:MM)] must be later than the [Start time (HH:MM)].

  • Events cannot span across more than a day (00:00 is the start of a day, 23:59 is the end of a day).

  • The lesson will be repeated weekly from weeks 1 to 13.

  • There will not be lessons in the recess week.

  • All prefixes (i.e. d\, v\ and t\) must be present.

  • [description] and/or [venue] can be left as blank spaces if you wish (i.e. " ").

Example:
Suppose you wish to add a weekly lesson from 3pm to 4pm on Friday,

enter the command: lesson d\CS2103T tutorial v\COM1-B103 t\Friday 15:00 16:00

NOVA will create weekly events for CS2103T tutorial at COM1-B103 on Friday from 3pm to 4pm for the entire semester.

EventLesson

Fig 5.3.4: Display message after entering
lesson d\CS2103T tutorial v\COM1-B103 t\Friday 15:00 16:00

Delete Event: delete (Chua Huixian)

You can delete an event that you no longer want. If the event does not exist, NOVA will inform you.

Format: delete t\[YYYY-MM-DD] i\[index]

  • [index] must be a positive integer. (E.g. 1, 2, 3, …​)

  • All prefixes (i.e. t\ and i\) must be present.

Example:
Suppose you wish to remove the second event from the list of events on 20 Feb 2020,

enter the command: delete t\2020-02-20 i\2

NOVA will delete the second event on 20 Feb 2020.

EventDelete

Fig 5.3.5: Display message after entering delete t\2020-02-20 i\2

Add Notes to Event: note (Chua Huixian)

You can add additional notes about an event. If the event does not exist, NOVA will inform you.

Format: note d\[description] t\[YYYY-MM-DD] i\[index]

  • [index] must be a positive integer. (E.g. 1, 2, 3, …​)

  • All prefixes (i.e. d\, t\ and i\) must be present.

  • [description] can be left as a blank space if you wish (i.e. " ").

Example:
Suppose you wish to add a note that indicates the work allocation to a meeting event,

enter the command: note d\Alice - Contact Us page, Bob - Readme Page t\2020-02-20 i\1

NOVA will add a note with the description "note d\Alice - Contact Us page, Bob - Readme Page t\2020-02-20 i\1" to the first event on 20 Feb 2020.

EventNote

Fig 5.3.6: Display message after entering
note d\Alice - Contact Us page, Bob - Readme Page t\2020-02-20 i\1

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.

1. The Logic component section under Design.

Logic component (Chua Huixian)

LogicClassDiagram
Figure 1. Structure of the Logic Component

API : Logic.java

  1. Logic uses the LogicParser class to determine which mode the user is in when they input a command.

  2. After which, the relevant parser is called (e.g. AddressBookParser).

  3. This results in a Command object which is executed by the LogicManager.

  4. The command execution can affect the Model (e.g. adding a person).

  5. The result of the command execution is encapsulated as a CommandResult object which is passed back to the Ui.

  6. In addition, the CommandResult object can also instruct the Ui to perform certain actions, such as displaying help to the user.

2. The Manage Events section under Implementation.

Manage Events (Chua Huixian)

The manage events feature handles the events of the user, including meetings, consultations, study sessions and lessons. Users are able to:

  • add events

  • delete events

  • add notes to events

Implementation - Deleting an event

The delete feature allows users to remove events from the schedule. This feature is facilitated by ScheduleParser, EventDeleteCommandParser and EventDeleteCommand. The operation is exposed in the Model interface as Model#deleteEvent().

Given below is an example usage scenario and how the delete mechanism behaves at each step.

  1. The user does view t\2020-03-20 to view their events on 20th March 2020.

  2. The user executes delete t\2020-03-20 i\2 command to delete the second event on 20th March 2020.

  3. EventDeleteCommandParser creates a new EventDeleteCommand.

  4. LogicManager executes the EventDeleteCommand.

  5. Model#deleteEvent() is called, and the Schedule object in ModelManager is updated.

The following sequence diagram shows how the delete operation works:

EventDeleteSeqDiagram

The following activity diagram shows what happens when a user inputs a delete command:

EventDeleteActDiagram

Design Considerations

Aspect: Syntax of Deleting an Event

  • Alternative 1 (current choice): choosing the event by its date and its index in the list of events on that date

    • Pros: relatively short to type, greater ease of implementation

    • Cons: users have to view the list of events on that date before determining which event to mark as done

  • Alternative 2: choosing the event by description

    • Pros: more recognisable for users

    • Cons: difficulty in implementing as certain events may have the exact same descriptions

3. The User Stories for events under Appendix B.

Priority As a …​ I can …​ So that I …​

* * *

student

create meeting events

can keep track of my schedule

* * *

student

create study session events

can keep track of my schedule

* * *

student

create consultation events

can keep track of my schedule

* * *

student

create lesson events

can keep track of my schedule

* * *

student

note down the location of the meeting

know where to go

* * *

student

delete events

can get rid of events that I do not need anymore

* * *

student

add notes to events

can jot down additional details about the events

* *

student

mark events as done

know which events I have completed

* *

student

find events

can check if I have any specific events according to keyword(s)

* *

student

repeat events

can add multiple similar events at one go

4. The Use Cases for events under Appendix C.

Use case 10: Adding a consultation event (Chua Huixian)

MSS

  1. Student enters consultation command with details of the consultation

  2. NOVA adds consultation event to the schedule

    Use case ends.

Extensions

  • 1a. NOVA detects error in data inputted

    • 1a1. NOVA informs student of the error

      Use case ends.

Use case 11: Delete an event (Chua Huixian)

MSS

  1. Student enters delete command with details of the event

  2. NOVA deletes the event

    Use case ends.

Extensions

  • 1a. NOVA cannot find the event given

    • 1a1. NOVA informs student that the event does not exist

      Use case ends.

Use case 12: Adding a note to an event (Chua Huixian)

MSS

  1. Student enters note command with details of the event

  2. NOVA adds note to the event

    Use case ends.

Extensions

  • 1a. NOVA cannot find the event given

    • 1a1. NOVA informs student that the event does not exist

4. The Manual Testing for events under Appendix F.

Adding an event (Chua Huixian)

  1. Enter schedule mode via nav schedule

  2. Adding an event

    1. Test case: meeting d\DG Meeting v\COM1 t\2020-03-13 13:00 14:00
      Expected: A meeting event will be added to the schedule. The details of the meeting will be displayed.

    2. Test case: meeting d\DG Meeting v\COM1 t\2020-03-13 14:00 12:00
      Expected: Error message is shown. The end time must be later than start time.

    3. Other incorrect commands to try: meeting, meeting d\DG Meeting v\COM1 t\2020-03-13 14:00.
      Expected: Error messages will be shown as well.