Overview
This project portfolio page serves to document my contributions to the VolunCHeer project.
VolunCHeer is an open-sourced Command Line Interface (CLI) management application designed for Volunteering Project Managers. We aim to help our target users alleviate the haystack of managing multiple projects, beneficiaries, and volunteers in an efficient and effective manner.
Team T08-1 consists of Zhao Junru, Nguyen Dang Huu, Jeremy Wong Kai Wen and myself. We are a group of friends who have experiences, working with major volunteering organizations. We understand the challenges volunteering project managers faced when dealing with multiple projects, beneficiaries and volunteers and thus, we created VolunCHeer to serve that need.

The user interacts with VolunCHeer using a command-line interface, and has a GUI created with JavaFX. VolunCHeer is written in Java, and has about 10 kLoC.
VolunCHeer’s codebase draws from SE-EDU's AddressBook Level 4.
Terminology
-
Volunteer: The volunteers who participate in volunteer organization such as NUS Community Service Club, NUS Vietnamese Community’s CIP Committee.
-
Beneficiary: Organizations who benefit from volunteering activities such as Old Folk Home, Nursing Home, and Orphanage.
-
Project: Projects that are set for volunteers to participate and help the beneficiary.
-
Volunteering Project Manager: The one who manages the arrangement of projects, assign volunteers and contact and associate beneficiaries with projects. In this project portfolio, the Volunteering Project Manager is mentioned as the user.
Role
I am in charge of testing for VolunCHeer. If you found any bugs in VolunCHeer, please do not hesitate to contact us directly.
Summary of contributions
-
Major enhancement: Volunteer Feature
-
What it does: It allows Project Manager to store the data of the volunteers and access specific data easily with a few simple commands.
-
Justification: This feature is one of the basic building blocks of VolunCHeer. Having access to and being able to filter thousands of volunteers' data in matter of seconds would allow project managers to plan their projects efficiently and effectively.
-
-
Major enhancement: Password Feature
-
What it does: It prompts for a password verification upon executing the application and prevent unauthorised users from using VolunCHeer.
-
Justification: The data stored in VolunCHeer is important and confidential. I have implemented the password feature because we are concerned about the security of our users and do not wish data stored in our program to be stolen.
-
Highlights: A simple UI with a single password field is used to implement this feature as it is more user friendly compared to using the command line interface.
-
UI interface:
-
Ensure that UI is running smoothly
-
-
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. |
Volunteer
Adding a volunteer: addVolunteer
/ av
As like before, this adds a volunteer to the volunteer pool
Format: addVolunteer n/NAME y/AGE g/GENDER r/RACE [rg/RELIGION] a/ADDRESS e/EMAIL p/PHONE_NUMBER
ec/EMERGENCY_CONTACT [dp/DIETARY_PREFERENCE] [m/MEDICAL_CONDITION] [t/TAG]…
Alternative Format: av n/NAME y/AGE g/GENDER r/RACE [rg/RELIGION] a/ADDRESS e/EMAIL p/PHONE_NUMBER
ec/EMERGENCY_CONTACT [dp/DIETARY_PREFERENCE] [m/MEDICAL_CONDITION] [t/TAG]…
A volunteer can have any number of tags (including 0) |
Examples:
-
addVolunteer n/John Doe y/18 g/male r/eurasian rg/christian a/John street, block 123, #01-01 e/johnd@example.com p/98765432 ec/Mary, Mother, 92221111 dp/vegetarian m/asthma
-
av n/Sarah Soh y/22 g/female r/chinese rg/buddhist a/betsy ave 6, 02-08 e/sarah08@example.com p/92345678 ec/Johnny, Husband, 81234568
Deleting a volunteer : deleteVolunteer
/ dv
After a volunteer has left, it can be deleted by this command by referencing its index in the list.
Format: deleteVolunteer INDEX
Alternative Format: dv INDEX
Examples:
-
listVolunteer
deleteVolunteer 2
Deletes the 2nd volunteer in the volunteer list. -
findVolunteer Betsy
dv 1
Deletes the 1st volunteer in the searched volunteer list.
Use the list volunteers commands to check the correct index of the volunteer to be deleted |
Editing a volunteer : editVolunteer
/ ev
Similar to beneficiary, we can update volunteer particulars by the given index.
Format: editVolunteer INDEX [n/NAME] [y/AGE] [g/GENDER] [r/RACE] [rg/RELIGION][p/PHONE] [a/ADDRESS] [e/EMAIL]
[ec/EMERGENCYCONTACT] [dp/DIETARYPREFERENCE] [mc/MEDICALCONDITION] [t/TAG]…
Alternative Format: ev INDEX [n/NAME] [y/AGE] [g/GENDER] [r/RACE] [rg/RELIGION][p/PHONE] [a/ADDRESS] [e/EMAIL]
[ec/EMERGENCYCONTACT] [dp/DIETARYPREFERENCE] [mc/MEDICALCONDITION] [t/TAG]…
Examples:
-
editVolunteer 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st volunteer to be91234567
andjohndoe@example.com
respectively. -
ev 2 n/Betsy Crower t/
Edits the name of the 2nd volunteer to beBetsy Crower
and clears all existing tags.
Locating volunteers by name: findVolunteer
/ fv
Searching for volunteers works similarly to beneficiaries.
Format: find KEYWORD [MORE_KEYWORDS]
Alternative Format: fv KEYWORD [MORE_KEYWORDS]
Examples:
-
findVolunteer John
Returnsjohn
andJohn Doe
-
fv Betsy Tim John
Returns any volunteer having namesBetsy
,Tim
, orJohn
Listing all volunteers : listVolunteer
/ lv
Shows a list of all volunteers in the volunteer pool.
Format: listVolunteer
Alternative Format: lv
Contributions to the Developer Guide
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documenta tion and the technical depth of my contributions to the project. |
Password Feature
Current Implementation
A password is required to grant access to the project manager at the start of the program. It serves as a security mechanism to protect the important data within.
At the start of the program, the UI is initialised by UiManager
. A password window will pop out and prompt the user
to enter the password.

The password feature uses ValidatePassword
to check if the user input matches the password stored in the program.
If the password matches, it will set boolean user
to be true. UiManager
will thus instantiate
fillInnerParts()
, displaying the hidden data to the project manager.

If the password is entered incorrectly for five times, the program will terminate itself. A sequence diagram is shown below to illustrate how it works in an abstract level.

Design Considerations
Aspect | Alternatives | Pros (+)/ Cons(-) |
---|---|---|
Implementation of Synchronization |
UI with a password field. (current choice) |
+ : It is simple and user friendly. It serves its purpose as a offline application for a single user.
|
Using Command Line Interface |
+ : It allows more flexibility to implement more parameters such as custom security questions to improve its security. |