Project: NUS Classes

NUS Classes is a desktop app for NUS Computing professors to manage their tasks and contacts. It includes task management features such as creating tasks, tagging tasks, assigning contacts to tasks, and marking tasks as complete or incomplete. It also includes contact management features such as finding contacts, assigning contacts to specific tasks and tagging contacts.

Given below are my contributions to the project:

  • New Feature: Built the foundations for the Task functionality.
    • What it does: Set up the framework for our NUS Classes product, which is a contact and task management app. By adding the task feature onto AB3’s existing contact functionality, this feature is the foundation for all Task-related commands in NUS Classes. Fields such as Task Name, Tag, DateTime set up the basic information contained within a Task, enabling NUS Computing professors to track their tasks
    • Highlights: This addition affects existing commands and commands to be added in the future. It required an in-depth analysis of what information should be encapsulated in a Task. The implementation too was challenging as it had to be correctly implemented to ensure all future commands built on this foundation work.
    • Credits: Reused some functionalities from the existing AB3 to suit Task

  • New Feature: Added AddTaskCommand. (Pull Request #55, #78)
    • What it does: Adds a Task to NUS Classes with the relevant information. Users can add Tasks with the relevant information such as TASKNAME, DATETIME and TAGS.
    • Justification: This allows NUS Computing Professors to keep track of their Task duties and stay organised.

  • New Feature: Added AddTaskCommandParser. (Pull Request #78)
    • What it does: Parses information from the user with the addt parameter and extracts relevant information to create a Task. Relevant information such as TASKNAME, DATETIME, TAGS are all parsed accurately to ensure the user’s input is relevant. Invalid inputs such as invalid datetime, missing parameters, or even invalid user inputs are reflected to the user. This allows the user to easily create tasks with relevant information.
    • Highlights: Custom error messages based on what the user has input incorrectly. For example for missing parameters, the error message will specify what parameters are missing. For invalid indexes, the error message will specify it as well, and invalid datetime is also covered.
    • Justification: A parser specific to AddTaskCommand ensures relevant input is parsed and custom messages highlight to the user what is needed to be fixed.

  • New Feature: Person includes their GITHUB_USERNAME. Updated UI accordingly. (Pull Request #98, #126)
    • What it does: Introduce Github Username functionality for contacts for NUS Computing professors to better manage their contacts. This also allows profs to easily review students’ and TAs’ work on Github.
    • Justification: Github username is a relevant field for NUS Computing professors for many project modules, and it will make contact management easier.
    • Highlights: Valid username inputs are in line with Github username standards, meaning that usernames can only contain alphanumeric characters or singular hyphens, and not starting with or ending with a hyphen.
    • Credits: Stack Overflow for the regex for Github usernames.

  • New Feature: Specific customised error messages for addc, addt, assign, unassign, deletec, deletet, editc, editt, findc, gen, mark, unmark, view.
    • What it does: Give the user specific error messages informing them of what parameters are missing/what parameters are invalid.
    • Justification: The user can more easily fix their command rather than combing through the User Guide.

  • New Feature: Wrote tests for AddTaskCommand, AddTaskCommandParser and GitUsername.
    • Justification: Proper testing to ensure these functions work.

Code contributed: RepoSense link

Project management:

  • Did project incrementally, with code contributions and commits to team repo in every week.
  • Finished all tasks by version deadline.
  • Regularly did PR reviews, issue tracker and assigning of issues based on team meetings.
  • Managed releases v1.2 - v1.4 (3 releases) on GitHub.
  • Did necessary team tasks.

Enhancements to existing features:

Update: AddContact and EditCommand to take in the relevant input. (Pull Request (#88, #98, #183))

  • What it does: Update these functionalities to be more appropriate for NUS Computing professor: Removed ADDRESS field and added GITHUB_USERNAME field for relevancy.
  • Highlights: Customised error messages for duplicated fields of PHONENUMBER, EMAIL and USERNAME as no two people should have these same two fields.

Update: AddContactParser and EditCommandParser command to parse relevant details and throw custom error messages. (Pull Request (#88, #183))

  • What it does: Update these parsers parse USERNAME rather than ADDRESS and to throw custom error messages based on what parameters are missing.
  • Justification: Custom error messages let the user know what needs to be changed.

Update: Added new logo for NUS Classes.

Update: Zoom Link display color. (Pull Request #153)

Update: SampleDataUtil for more relevant tasks for NUS Classes as default tasks/contacts. (Pull Request #153)

Update: Update tests for AddCommand, AddCommandParser and EditCommand.

Update: Added tests for TaskBetweenDatesPredicate

Update: Update test cases based on new error messages for all classes.

Update: Update UniquePersonList from AB3’s implementation. This allows the functionality of contacts to allow same name among contacts.

  • What it does: Differentiate contacts via their email, phone and Github Username (which are required to be unique)
  • Justification: Professors may have many contacts with the same name but are different students, especially for larger modules.

Documentation:

  • User Guide:
    • Added images for examples of each command. (Pull Request #158)
    • Added images of UI. (Pull Request #158)
    • Added write-up for description of NUS Classes.
    • Updated Table of Contents.
    • Added documentation for the features add contact and add task
    • Rewrote examples for existing features to be more appropriate to NUS Classes, e.g. Lecture as example of Tasks.
    • Updated Command Summary in UG
    • Fixed PE-D documentation issues (Pull Requests (#249))
  • README:
    • Updated README.md
  • SettingUp:
    • Updated SettingUp.md
  • Developer Guide:
    • Added description of NUS Classes
    • Fixed naming in DG
    • Update Design Considerations in DG
    • Update Use cases in DG
    • Added Adding Task implementation in DG.

Community:

  • PRs reviewed (with non-trivial review comments): #258, #253, #175, #170, #166, #162, #95
  • Maintained Issue Tracker and commented on Issues for others.
  • Regularly reviewed PRs

Tools:

  • Integrated a third party library (Natty) to the project (#42)
  • Integrated a new Github plugin (CircleCI) to the team repo.

  • {you can add/remove categories in the list above}