Project: CodeContact

CodeContact is a desktop address book solution for Software Engineering companies. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

Given below are my contributions to the project.

  • New Feature: mark-deadline and unmark-deadline
    • What it does: Gives users the ability to mark project deadlines as done or undone.
    • Justification: One basic job of project managers is to manage deadlines, so having a mark and unmark feature allows them to update the status of the project and project deadlines accordingly.
    • Highlights: Deadline fields had to be updated to ensure that an index is saved when a deadline for a project is created. Further methods also had to be implemented to toggle the isDone status of a deadline between true and false. Additional changes to the existing GUI were made to reflect deadline numbers to allow users to mark and unmark deadlines according to the index. This involved adding a new column to the table of deadlines that displayed deadline indexes.
  • Enhancement to existing features: edit-developer, edit-client, edit-project
    • What it does: Allows users to edit the fields of existing developers, clients, and projects.
    • Justification: This gives project managers the flexibility and freedom to change and update the details if necessary. Aside from keeping contact details accurate, this is also especially important as it allows for the reassignment of developers to new projects and the updating of project deadlines after milestones.
    • Highlights: Edits are done according to the object’s index in the displayed list in the relevant tab. Making edits to objects automatically switches the tab on the GUI to the relevant one. Various code changes to the existing edit function had to be made to account for the different fields of the object to edit, as well as various implemented restrictions on fields that could and could not be changed. The respective Parser and Command classes were extended to account for each additional field, and thorough checks were implemented to ensure that users are unable to access prefixes that are meant for other objects.
  • Enhancements to existing features:
    • Updated the GUI project table columns and CSS (Pull request #142)
  • Other significant code contributions:
    • Initially implemented edit command with behaviour varying in response to access rights, but undid changes due to shift in project direction (Pull requests #59, #66)
    • Implemented Project and Project relevant classes (eg. Deadline, Priority, Description) for use by team (Pull request #73)
    • Implemented project validation checks to ensure assigned projects exist in the address book (Pull request #159)
    • Wrote additional tests for features to increase coverage (Pull request #249)
  • Code contributed: RepoSense link

  • Project management (team-based tasks contributions):
    • Set up project schedule tracking with milestones and issues for v1.1
    • Updated Developer Guide with project notes for v1.1
    • Add screenshots of UI and managed the collaboration group document for tutorial checks
    • Create and release JAR file for v1.3 and v1.4
    • Assign labels and assignees to bug issues in post-PED
  • Documentation Contributions:
    • User Guide Contributions:
      • Added documentation for the features add, edit and mark/unmark deadline features (Pull requests #104, #151, #163, #263)
      • Created template format for other team members to follow for their portion of the User Guide (Pull request #151)
      • Did extensive cosmetic tweaks for standardisation and fixed bugs across entire UG (Pull requests #252, #279)
    • Developer Guide Contributions:
      • Added all user stories and several use cases for initial iteration, but undid changes due to shift in project direction (Pull request #35)
      • Added implementation details of the features edit-developer, edit-client, edit-project, mark-deadline , and unmark-deadline (Pull requests #109, #263)
      • Added instructions for manual testing in Appendix (Pull request #263)
      • Added planned enhancements in Appendix (Pull request #263)
      • Did extensive cosmetic tweaks for standardisation and fixed bugs across entire DG (Pull request #279)
  • Community (Review/mentoring contributions):
    • Helped to modify add command parsers with part of my implementation for edit command parsers to ensure more thorough and bug-free parsing of user inputs (Pull request #127)
    • Conducted pull request reviews for team members (Pull request #238)
  • Contributions beyond the project team:
    • Reported bugs and suggestions for other teams in the cohort