Victor Lai's Project Portfolio Page
Project: FriendBook
FriendBook - is a desktop app for managing friend contacts and plan details, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI) created with JavaFX. If you can type fast, FriendBook can get your plans management done faster than traditional GUI apps. It is written in Java, and has about 17kLoC.
Given below are my contributions to the project.
- New Feature: Added the functionality for users to add plan.
- What it does: allows user to add a plan to his FriendBook, and associate the plan to an existing friend.
- Justification: This feature is a key functionality of FriendBook which requires plans to be added, so that user can view and manipulate with the added plan as required.
- Highlights:
- Decided on
FRIEND_NAME
as the most user-friendly identifier of the friend that is to be associated with the plan, as it is not only unique to each friend, but also easily retrievable - Implemented a search method to
getPersonByName
and check if the friend exists
- Decided on
- New Feature: Added the functionality for users to find plans by existing friends’ names.
- What it does: allows user to find existing plans that are associated with the given friend.
- Justification: This feature provides a clean and neat way for users to filter and view their plans that are of his interest (related to queried friend).
- Highlights:
- Obtaining the queried friend (if exists) by the
FRIEND_NAME
using the added function stated above was needed to get the filtered list of plans associated with the friend - Filtering plans based on
FRIEND_NAME
required implementation ofPlanContainsFriendPredicate
to fulfill the previous highlight
- Obtaining the queried friend (if exists) by the
- New Feature: Added the functionality for users to list all their plans.
- What it does: allows user to get all their plans without any filters.
- Justification: This feature provides users the ability to view all their plans after the scenario where they execute the above
find-plan
command to filter the plans.
- Enhance Existing Delete Command: Modified
DeleteCommand
to ensure friends are deleted safely.- What it does: prevents and alerts user when he attempts to delete a friend that is involved in at least 1 plan.
- Justification: This modification provides logical sense for user who wishes to view complete details of friend associated to his existing plans, allowing for better user experience.
- Highlights: Utilised previously implemented
PlanContainsFriendPredicate
from above to find plans still associated to the friend attempted to be deleted.
- Enhance Existing Edit Command: Built on
EditCommand
to ensure edited friends’ detailed are reflected in associated plans.- What it does: updates relevant plans which are associated to the edited friends’ details
- Highlights:
- After analysing existing AB3
EditCommand
implementation that it creates a newPerson
object and replaces the old one, hence a similar replacement had to be done in each associated plan.
- After analysing existing AB3
- Testing: Added relevant test and helper files to aid testing of above implementations
- What it does: tests all new functionalities and bug fixes for optimal code coverage
- Highlights: Added test files for above implementations. Added test helper files(
TypicalPlans
,PlanBuilder
) used in other tests.
-
Code contributed: RepoSense link
- Project management:
- Set up team’s GitHub organization, set up repo, CodeCov and CI
- Managed releases
v1.3(trial) - v1.3(final)
(2 releases) on GitHub - Documented V1.2 postmortem and V1.3 product demo on developer document
- Documentation:
- User Guide:
- Added documentation for
add-plan
,find-plan
,list-plan
,clear
,help
,exit
commands - Update
Command summary
portion to match it with the available commands
- Added documentation for
- Developer Guide:
- Added implementation details of the
list-plan
feature. - Wrote Appendix Sections:
Product scope
,User Stories
, 2Use Cases
,NFR
,Deleting a person
,Editing a plan
andSaving data
- Added implementation details of the
- User Guide:
- Review / Mentoring Contributions:
- Review bugs flagged out during PE-D and categorised them while removing repeated bugs