Project: InternHunter

InternHunter is a CLI-centric desktop application which aids university students in applying for tech internships. It lets users manage their own customisable collection of companies, internships, internship applications and their own user profile, so that they can keep track of internships that they are interested in.

It has a GUI created with JavaFX. It is written in Java, and has about 35k LoC.

Summary of Contributions

  • Code contributed: RepoSense link

  • Features and enhancements implemented:
    • Add a company (Pull request #143)
      • What it does: Allows the user to add a company to the app’s company list.
      • Highlights: How the company class would be structured was decided upon and it laid the structural foundation for the other core data types, namely internships and applications, and how these 3 data types would interact. It required a thorough consideration of design alternatives, regarding how to best model a company in relation to internships and internship applications in an OOP fashion.
    • Delete a company (Pull request #149)
      • What it does: Allows the user to delete a company from the app’s company list.
      • Highlights: The implementation of this feature was challenging as it required an in-depth analysis of its design and design alternatives since it directly affects the relationship between the company, internship and application data types and their interactive behaviour. As a result, this feature is the most complex of all the deletion-related features in the application since its usage can lead to the deletion of 3 different data types - company, internship and application.
    • Edit a company (Pull request #153)
      • What it does: Allows the user to edit a company from the app’s company list.
      • Highlights: The implementation of this feature required sharp insight into the relationship between company and internship data types as it required honoring the established relationship that company and internship data types have, since editing a company could potentially affect its internships.
    • View a company (Pull request #159)
      • What it does: Allows the user to view a company from the app’s company list in full detail.
    • Find companies (Pull request #252)
      • What it does: Allows the user to find companies by name from the app’s company list.
    • List all companies (Pull request #252)
      • What it does: Allows the user to list all companies in the app’s company list.
    • Edit an internship (Pull request #163)
      • What it does: Allows the user to edit an internship from the app’s internship list.
      • Highlights: The implementation of this feature required keen insight into the relationship between internship and application data types as it required honoring the established relationship that internship and application data types have, since editing an internship directly affects an application made to it.
    • Contributed significantly to improving the test coverage (Pull requests #329, #369, #418, #424)
  • Documentation:
    • User Guide:
      • Added documentation for all company features, i.e. add, delete, edit, view, find, list. (Pull requests #120, #252, #267)
      • Wrote the introduction and overview. (Pull request #252)
      • Standardized certain formatting aspects. (Pull request #266)
    • Developer Guide:
      • Added implementation details and UML diagrams for the ‘delete a company’ feature. (Pull request #213)
      • Added implementation details and UML diagrams for the ‘Model’ component. (Pull request #293)
      • Added the product scope. (Pull request #93)
      • Added the user stories. (Pull requests #93, #120)
      • Added use cases. (Pull requests #93, #120)
      • Standardized certain formatting aspects.
  • Team-based tasks:
    • Maintaining the issue tracker and managing milestones.
    • Documenting the target user profile and value proposition.
  • Community: