Yong Kang's Project Portfolio Page
Project: Pawbook
Pawbook is a desktop application for dog school managers to facilitate their bookkeeping of puppies and dogs in the school, optimized for use via a Command Line Interface (CLI) which caters to fast-typers who prefer to use a keyboard. You can navigate the application with ease and execute instructions by typing text-based commands in the command box provided.
Given below are my contributions to the project.
- New Feature: Schedule Command
- Create the schedule command to make it possible for users to view all ongoing programs on happening on a particular day, writing the command and its parser along the way alongside the
ProgramOccursOnDatePredicate
to perform the actual filtering.
- Create the schedule command to make it possible for users to view all ongoing programs on happening on a particular day, writing the command and its parser along the way alongside the
- Enhancements to existing features:
- Add/delete command:
- Perform necessary refactoring to allow for addition/deletion of 3 different types of entities.
- JSON data file:
- Created all necessary adaptions of the various entities needed to be stored into a Jackson-compatible format.
- Make use of Jackson annotations to utilize its polymorphism awareness to dynamically restore each JSON object back to the corresponding type.
- List command:
- Enable filtering of entities according to the actual type.
- Add/delete command:
- Code Refactoring: Perform initial refactoring to adapt original codebase
- Renamed the package to
dog.pawbook
. - Renamed most of the AddressBook references to Pawbook.
- Rename
Person
toOwner
and require entity keyword during add and delete. - Disabled a few commands while the core of the application was rebuilt.
- Created a base
Entity
class that is parent toOwner
and use it throughout the application. - Adapted
UniquePersonList
intoUniqueEntityList
- can operate on all entity types
- able to check that the IDs referenced by every ID is valid upon import of an external list, helps verify data integrity when reading from JSON.
- Switched from using displayed index as reference to using unique universal ID.
- Made it possible to display any type of entities with less reliance on GUI-side changes.
- Renamed the package to
- Code Refactoring: General adherence to OOP
- Refactor several parts of the features both old and new to conform to OOP standards and avoid boilerplate wherever possible.
- Remind others during PR reviews of the possible areas that can be better abstracted.
-
Code contributed: RepoSense link
- Project management:
- Managed milestones
v1.1 - v1.4
on GitHub. - Planned out the necessary work to be allocated.
- Reviewed most of the functional code PRs and gave constructive feedback on areas that can be improved.
- Provided assistance and guidance to teammates when they are stuck on a particular task.
- Helped in setting up of GitHub Team Repo:
- Protected master branch
- Enabled CI
- Setup Codecov
- Performed release management:
- Did all version bumps
- Released JAR files for all milestones and fixes
- Managed milestones
- Documentation:
- User Guide:
- Ensured layout consistency for every command.
- Tweaked wording for better clarity.
- Developer Guide:
- Updated Design section to fit changes in Pawbook.
- Wrote implementation details for Entities, Add / Delete feature.
- Centered all images.
- User Guide:
- Community:
- Actively participated in the module forum on GitHub and provided help to other course mates, e.g. help, discussion.
- Reported numerous valid bugs to another team during PE dry-run.
- Tools:
- Further integration of Jackson into codebase for polymorphism to work properly during JSON conversion, avoiding the need to hardcode types and violate OOP principles.