Project: PlanIT

PlanIT is a task scheduling application targeted at NUS computing students. Our goal is to improve students’ productivity with features and tools to help them manage their schedules. It features simple and short commands that are enhanced for fast typists as well as features which focuses on solving our target audience’s problems.

Given below are my contributions to the project.

  • New Feature: Added the ability to add dates to a given task
    • What it does: allows the user to have deadlines for each task
    • Justification: This feature is one of the core of the product as a task manager requires task to have deadlines
    • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands.
    • Testing: Added Unit tests to ensure code coverage and ensures that future changes will still be correct with CI.
  • New Feature: Added the ability to sort dates in the given list of task
    • What it does: allows the user to have see whats the next task that is due
    • Justification: This feature allows user to organise their task based on when it is due, giving users the ability to see due dates in ascending or descending order.
    • Highlights: The sort feature sorts the tasks based on the different dates of the tasks from the earliest task to the last task in chronological order. For tasks with no dates, they would appear last.
    • Testing: Added Unit tests to ensure code coverage and ensures that future changes will still be correct with CI.
  • New Feature: Added the ability to add duration to task
    • What it does: allows the user to have a dedicated duration to finish the task
    • Justification: This feature allows user to cater a period of time for the task
    • Highlights: This enhancement affects existing commands and commands to be added in future. It required an in-depth analysis of design alternatives. The implementation too was challenging as it required changes to existing commands since it would have dependencies such as adding a duration would mean a required date to be added first.
    • Testing: Added Unit tests to ensure code coverage and ensures that future changes will still be correct with CI.
  • Code contributed: RepoSense link

  • Project management:
    • Managed releases v1.2 - v1.4 (3 releases) on GitHub
    • Necessary general code enhancements. e.g. Code Refactoring
    • Maintain issue tracker.
  • Enhancements to existing features:
    • Updated phone field to deadline field (Pull requests #44, #49, #77, #87)
    • Updated start time to duration (Pull requests #95)
    • Updated deadline to date (Pull requests #111)
    • Wrote additional tests for existing features to increase coverage (Pull requests #49, #127, #242)
  • Documentation:
    • User Guide:
      • Added documentation for the features date and find :#209
      • Added documentation for sort by a and sort by d feature :#119
      • Did cosmetic tweaks to existing documentation of features clear, exit: #74
    • Developer Guide:
      • Added implementation details of the deadline feature : #86
      • Added implementation details of sort feature : #225
  • Contribution to team-based tasks:
    • In charge of ensuring the fork workflow throughout the project.
    • In charge of merging pull requests and ensuring that reviews for PRs are valid.
    • Help set up the GitHub team org and repo.
    • Managed issue tracker, assigning of issues and tagging of issues for PE-D.
    • Organise team discussion to keep the project moving forward
    • Ensured features implemented were user story focused and catered to the needs of users
  • Community:
    • Asked questions in Gitter, one of which was about the convention of code integration.
    • Reported bugs and suggestions for other teams in the module (examples: 1, 2, 3)
    • Provide feedback to peers on their pull requests.
  • Tools:
    • Used JavaFX library and CSS and Canva extensively for the Graphic User Interface.