Daniel Lee's Project Portfolio Page
Project: InternConnect
InternConnect is a one-stop, convenient, and efficient platform to manage and empower how internship campus recruiters who prefer CLI to GUI work with their applicants’ data. 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.
- Enhancements to existing features: Upgrade existing find functionality (PR #182).
- What it does now:
- Allows user to find by multiple keywords per specified field, and search for multiple fields all at once
-
Justification:
- This feature improves the product significantly because it empowers to user to search for applicants not just by name, but by whatever field that they want to search for, its’ relevant keywords, all in 1 command.
- This makes the
find
command much more powerful, robust, useful and customizable for the user to narrow down and find that specific applicant they are looking for.
-
Highlights:
- Initially, I wanted to create a generic abstract class
ContainsKeywordsPredicate
which all sub predicates can inherit from, in the spirit of OOP and keeping the method signature for the find command relatively the same. However, after further thought, in the spirit of a brownfield project, and for consistency with the previous version of the product, I instead decided to create each sub predicate individually, and combine these predicates into 1 predicate as per the original method signature ofFindCommand#FindCommand(predicate)
to input intoModel#updateFilteredApplicantList(predicate)
. - However, this does not make sense OOP wise, and it removed traces of all the sub predicates before it was actually executed. I hence decided to meet between the 2, and have the find command keep a list of active predicates to be applied, and then combine the predicates together into a single predicate to avoid changing the method signature of
Model#updateFilteredApplicantList(predicate)
.
- Initially, I wanted to create a generic abstract class
This way, the codebase is still consistent with the previous version of the product, and is easy for developers to understand, maintain and extend in the future.
- What it does now:
-
New Fields Added: Added new field
graduationDate
to an applicant (PR #110).- Now we can specify the value of
graduationDate
inadd
,edit
,find
using ag/
prefix.
- Now we can specify the value of
-
Code contributed: RepoSense link
- Project management:
- Reviewed and approved team members’ PRs
- Initial set up of project Caban board
- Enhancements to existing features:
- Adjusted CLI prefixes for better user friendly input (PR #168)
- Documentation:
- User Guide:
- Refined and added documentation for the features
find
andhelp
(PR #86)
- Refined and added documentation for the features
- Developer Guide:
- User Guide:
- Community:
- Tools:
- Used Github and Git for version control, with SourceTree as a GUI for Git
- Used IntelliJ to edit all files
- Used PlantUML to create UML diagrams