Project: InternSHIP

InternSHIP is a desktop app for university students to manage their internship applications. InternSHIP has been optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).

Given below are my contributions to the project.

  • New Feature: Added the ability to accept an application, i.e. mark the application outcome as ‘Accepted’.
    • What it does: Allows the user to mark the outcome of an application as ‘Accepted’. This means that the user has been accepted by the company for the position they applied for (Pull request #57).
    • Justification: This feature improves the product significantly because a user can better organise their applications by categorising them into ‘Accepted’, ‘Rejected’ and ‘Pending’.
    • Highlights: The implementation was significantly heavy as it required building the new accept command from scratch and formulating detailed tests for the command.
  • New Feature: Added the ability to reject an application, i.e. mark the application outcome as ‘Rejected’.
    • What it does: Allows the user to mark the outcome of an application as ‘Rejected’. This means that the user has been rejected by the company for the position that they applied for (Pull request #57).
    • Justification: This feature improves the product significantly because a user can better organise their applications by categorising them into ‘Accepted’, ‘Rejected’ and ‘Pending’.
    • Highlights: The implementation was significantly heavy as it required building the new reject command from scratch and formulating detailed tests for the command.
  • New Feature: Added the Interview Date and Time field.
    • What it does: Allows the user to enter the date and time of the interview (Pull request #127).
    • Justification: Interviews are one of the most important parts of an internship application. This feature improves the product significantly because it helps prevent scheduling clashes for future interviews.
    • Highlights: This feature affected all existing commands as a new field had to be added to all commands. Many test cases needed to be changed too.
  • New Feature: Added the Requirement field.
    • What it does: Allows the user to enter application requirements such as CV and resume (Pull request #102).
    • Justification: Being able to view all the application requirements helps to not miss out on submitting any important documents.
    • Highlights: This feature affected all existing commands as a new field had to be added to all commands. Many test cases needed to be changed too.
    • The implementation of this feature was later partially modified by the team.
  • Enhancements to existing features:
    • Implemented the mmm-d-yyyy format for the Deadline (Pull request #118).
    • Wrote additional tests for existing features to increase coverage (Pull requests #118, #239, #62).
    • Refactored the whole codebase to remove the tag functionality (Pull request #121).
    • Refactored naming for the test classes (Pull request #80).
    • Fixed bugs from the Practical Examination Dry Run (PED) (Pull requests #211, #212, #220).
  • Code contributed: RepoSense link

  • Team tasks and Project Management:
    • Managed deadlines and deliverables for the group, including updating the issue tracker and milestones.
    • Enabled assertions for every Gradle run (Pull request #102).
  • Documentation:
    • User Guide:
      • Added documentation for the accept and reject features (Pull requests #114, #159).
      • Added documentation for the Interview Date and Time and Application Requirements fields (Pull requests #220, #133).
    • Developer Guide:
      • Added implementation details for the accept and reject features (Pull request #99).
      • Added detailed UML Diagrams for the accept and reject features (Pull request #152).
  • Community:
    • PRs reviewed with non-trivial comments (Some examples: #113, #140, #103).
    • Reported an above-average number of bugs in the PE-D (Some examples: #13, #10, #7).