PROJECT: Internship Diary


Overview

Internship Diary is a desktop-based internship application tracking software. The user interacts with it using a CLI, and it has a GUI created with JavaFX.

The fact that the graduation requirements for Computer Science is at least 6 months of internship continuously haunts the minds of every Computer Science student yet to complete this requirement. In order to aid in reducing the stress of such students, we came up with the idea of the Internship Diary.

Summary of contributions

  • Major enhancement: Added the ability to sort internship applications. (PR #71, #113, #199)

    • What it does: Sorts internship applications by field.

    • Justification: This feature improves the product significantly as users can better manage their internship application list. This is a basic feature which every organizer app need to have.

    • Highlights: This enhancement was not very hard to implement, but a lot of effort went into thinking about how to make it more extendable.

    • What could be improved: CliSyntax should have been refactored into an Enum. This would have allowed for a very simple switch statement implementation.

  • Minor enhancement: Added CommandBox history. (PR #101)

    • What it does: Users can navigate to previous commands using up and down keys.

    • Justification: Allows users to access similar past commands. Also speeds up testing considerably.

    • Highlights: The motivation of this enhancement was originally to make manual testing much simpler. At first the command history was done directly on the CommandBox class, but I ended up abstracting the code into its own class. I also spent some time on deciding the data structure to store the command history, but i realised that a lot of my worries was over constant time performance differences, so I simply used the data structure (Linked List) which was already implemented in Java default libraries with all the functionality I needed.

  • Minor enhancement: Added display of what the current list is sorted or filtered by. (PR #114])

    • Justification: This feature is a nice visual indication as to what a list is sorted or filtered by.

    • Highlights: Thought very long about how to best pass the description of the comparator or predicate without adding too many new methods. In the end I just settled on overriding the toString method, directly or by using a wrapper class. Although it feels very crude, but it is simple and easy to extend to future commands which may involve changing the Comparator or Predicate.

  • Minor enhancement: Added DateTimeUtil to better parse dates. (PR #104)

    • What it does: Allows application to parse date inputs formatted in different formats.

    • Justification: Gives users more freedom as to how they want to enter dates.

  • Code contributed: tP Code Dashboard

  • Other contributions:

    • Project management:

      • Standardised the Intellij IDEA code formatter, in order to make the code base more uniform and to meet the checkstyle requirements (PR #221).

    • Review/mentoring contributions:

      • Was the main technical adviser, and suggested implementation methods for several features. (PR #82, #118, #216)

    • Enhancements to existing features:

      • Prettified the help window. (PR #73)

      • Allowed certain prefixes to be optional. (PR #84)

      • Added confirmation prompt for clear command. (PR #98)

      • Implemented Enums for Listener System. (PR #125)

      • Change Implementation of DisplayInternshipDetails to Listener System. (PR #198)

    • Helped with refactoring of Internship Diary from Address Book by updating the storage classes (PR #33, #50) and updating DG diagrams and text.

    • Community:

      • Contributed to forum discussions (examples: 1 )

    • Contributions to team-based tasks :

      • Renamed project folder from address to diary.

      • Set up GitHub, Travis CI, Coveralls and Codacy

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.

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.