User Guide
Welcome to Match !
Your premier desktop app for volunteer coordinators to keep track of volunteer contacts as well as assign volunteering assignments to them.
We are optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Match can get your contact management tasks done faster than traditional GUI apps.
Master the wand and become the ultimate task wizard .
Key features include:
- Fast Volunteer Addition
- Effortless Editing
- Simplified Searching
- Volunteer Work Assignment
Table of Contents
- Using this Guide
- Quick start
- Navigating the GUI
-
Features
- Adding a volunteer:
add
- Editing a volunteer :
edit
- Adding availabilities :
addavail
- Removing availabilities :
removeavail
- Listing all volunteers :
list
- Locating volunteers by name:
find
- Deleting a volunteer :
delete
- Clearing all entries :
clear
- Assigning volunteers :
assign
- Listing all assignments :
lista
- Remove assignments :
removeassign
- Refreshing availabilities :
refresh
- Copying emails :
copy
- Exporting to CSV:
export
- Viewing help :
help
- Exiting the program :
exit
- Accessing the command history
- Using the autocomplete
- Saving the data
- Data cascading
- Editing the data file
- Adding a volunteer:
- FAQ
- Known issues
- Command summary
Using this Guide
This user guide (UG) is your companion in unlocking the full potential of Match. It’s here to help you understand the app and leverage its features to manage your volunteers like never before.
Glossary
When using Match, you will encounter the symbols and terms explained below:
Symbol | Meaning |
---|---|
Important information | |
Warning or caution | |
Additional information such as tips or notes |
The following glossary clarifies commonly-used terminology:
Term | Meaning |
---|---|
Assignment | A volunteering assignment that has to be completed by the organization. |
Availability | A date or multiple dates to indicate when the volunteer is available. |
Case-insensitive | Casing of alphabetic characters doesn’t matter (e.g., “john” = “JOHN”). |
Case-sensitive | Casing of alphabetic characters matters (e.g., “add” ≠ “ADD”). |
Command Line Interface (CLI) | A text-based way to interact with Match. |
Command | Input from the user telling Match to perform an action. See Command Summary. |
Command Prompt | The default terminal for Windows. |
Comma-separated values (CSV) | A text file format storage whereby each field is being separated by a comma. |
Contact card | Box displaying each volunteer’s details. |
Entry | A collection of information. Typically displayed as a single row in Match GUI. NAME , PHONE_NUMBER , EMAIL , AVAILABILITY and TAG information forms a single entry, refer here. |
Field | Also commonly known as the columns of a table. |
GUI | Graphical User Interface, the visual display of Match. |
GUI component | Parts that make up the GUI. For details, refer to Navigating the GUI. |
Java | The main programming language that is powering this magical software. |
Parameter | Fields in a command to fill up, capturing important information. |
Prefix | A special kind of variable used to identify fields. E.g. n/ is the parameter for the NAME field, refer here. |
Tag | A keyword or term assigned to a piece of information to assist in identification. |
Terminal | A CLI interpreter to execute commands that can perform tasks on a computer. |
Volunteer | A person who is tasked to take on volunteering assignments. |
Quick start
-
Ensure you have Java
11
or above installed in your computer for the magic to work . Refer here on how to install Java. -
Download our latest
match.jar
from here. -
Copy the file to the folder you want to use as the home folder for your Match.
-
For Windows users:
- Open up Windows Search by pressing on the ‘Windows’ key and type
Command Prompt
orTerminal
. - Run
cd [JAR file location]
then runjava -jar match.jar
command to open up app.
Example:cd "C:\Users\John\My favourite location" java -jar match.jar
- Open up Windows Search by pressing on the ‘Windows’ key and type
-
For Linux / macOS users:
- Open up the search utility by pressing on the
Command
+Space bar
key and typeTerminal
. - Run
cd [JAR file location]
then runjava -jar match.jar
command to open up app.
Example:cd "~/John/My favourite location" java -jar match.jar
- Open up the search utility by pressing on the
-
A GUI similar to the below should appear in a few seconds. Note how the app contains some sample data.
-
Type the command in the command box and press Enter to execute it. e.g. typing
help
and pressingEnter
will open the help window.
Some example commands you can try :-
list
: Lists all volunteers. -
add n/John Doe p/98765432 e/johnd@example.com a/25/05/2025
: Adds a contact namedJohn Doe
to the volunteer contacts. -
delete 3
: Deletes the 3rd contact shown in the current list. -
clear
: Delete all contacts. -
exit
: Exits the app.
-
- Refer to the Features below for details of each command.
Navigating the GUI
Match has a Graphical User Interface (GUI) that provides a pleasant visual experience on top of comprehensive functionality. Here is a quick look at the two different tabs present in Match:
Volunteers Tab
Volunteers tab is the default tab, displaying all volunteers and their availability on a single screen. This view is useful for finding volunteers, which you will learn how to accomplish later!
Assignments Tab
Assignments tab is the alternate tab that displays all assignments . This view helps you manage all the assignments for your volunteers.
Features
Notes about the command format:
-
Words in
UPPER_CASE
are the parameters to be supplied by the user.
e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Command are case-sensitive and are to be in
lower_case
.
e.g. inadd n/NAME
,add
is a command which should be in lower-case. -
Items in square brackets are optional.
e.gn/NAME [t/TAG]
can be used asn/John Doe t/elderly
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/elderly
,t/climate t/hospital
etc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is also acceptable. -
Extraneous parameters for commands that do not take in parameters (such as
help
,list
,exit
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines as space characters surrounding line-breaks may be omitted when copied over to the application.
Adding a volunteer: add
Never lose count of your volunteers , add a volunteer to your volunteer contacts.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL [a/AVAILABILITY]… [t/TAG]…
- NAME
- Only accepts spaces and alphanumeric characters.
- Does not allow for duplication. You will be not allowed to add 2 volunteers with the ‘same’ name. the following points will explain what is considered ‘same’.
- For flexibility, upper and lower cases are considered distinct.
e.g.Bob
andbob
are considered 2 different entities. - The number of spaces entered will be registered.
e.g.John[space]Doe
is different fromJohn[space][space]Doe
.
- PHONE_NUMBER
- Only accepts numbers.
- Must be at least 3 digits in length.
- Does not allow for duplication.
- EMAIL
- Format:
[local-part]@[domain-name]
- local-part:
- Accepts special characters
+_.-
in addition to alphanumeric characters. - Nevertheless, special characters must not be consecutive and local-part cannot begin or end with a special character.
- Accepts special characters
- domain-name:
- Domain labels (cannot be empty), separated by
.
, make up the domain name.
e.g.example.com
is valid whileexample..com
is not valid. - Domain label can only be alphanumeric characters, separated by a single hyphen (if any). However, ending domain label should not contain any hyphens.
- Ending domain label needs to include a minimum of two characters.
- Domain labels (cannot be empty), separated by
- Format:
- AVAILABILITY - refer to addavail.
- TAG
- Only accepts spaces and alphanumeric characters.
Take note:
- You can use tags of any length, but tags that are longer than 25 characters will be truncated when they are shown.
- Similarly, phone numbers and emails that are too long (more than ~ 40 characters) will be truncated.
Examples:
add n/John Doe p/98765432 e/johnd@example.com a/22/05/2024
add n/Betsy Crowe t/elderly e/betsycrowe@example.com a/25/05/2024 p/1234567 t/wildlife
What you should see:
Editing a volunteer : edit
Looks like someone changed their information, did they finally admit their phone number isn’t ‘12345678’? Use this to edit an existing volunteer in the volunteer contacts.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/AVAILABILITY]… [t/TAG]…
- Edits the volunteer at the specified
INDEX
. The index refers to the index number shown in the displayed volunteer list. The index must be a positive integer 1, 2, 3, … - At least one of the optional fields must be provided.
- Existing values will be updated to the input values if they are valid.
Take note:
- When editing tags, the existing tags of the volunteer will be removed i.e. editing of tags are not cumulative.
e.g.edit 1 t/newTag
will result a single tagnewTag
for volunteer at index 1. - You can remove all the volunteer’s tags by typing
t/
without specifying any tags after it. - Constraints for email, phone number and tag(s) are similar to that of add command.
Examples:
-
edit 1 p/91234567 e/johndoe@example.com
edits the phone number and email address of the 1st volunteer to91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
edits the name of the 2nd volunteer toBetsy Crower
and clears all existing tags.
What you should see:
Adding availabilities : addavail
Yay looks like someone is free on that day ! Quickly add the available dates to the volunteer.
Format: addavail INDEX a/AVAILABILITY
- Adds availabilities to volunteer at the specified
INDEX
. This index refers to the index number shown in the displayed volunteer list.
The index must be a positive integer 1, 2, 3, … - Availability must be in the format of DD/MM/YYYY e.g.
28/03/2024
. - Duplicate availability for one volunteer is not allowed.
Examples:
addavail 1 a/01/01/2024
addavail 2 a/02/03/2024 a/03/03/2024
What you should see:
Removing availabilities : removeavail
Uh oh seems like your volunteer is busy , hurry and remove the available dates from the volunteer.
Format: removeavail INDEX a/AVAILABILITY
- Removes availabilities from volunteer at the specified
INDEX
. The index refers to the index number shown in the displayed volunteer list. The index must be a positive integer 1, 2, 3, … - Availability must be in the format of DD/MM/YYYY e.g.
28/03/2024
. - Availability must be present at the index in order to remove.
Examples:
removeavail 1 a/01/01/2024
removeavail 2 a/02/03/2024 a/03/03/2024
Caution: Removing an availability will cascade delete all assignments affected. For example, if Alice has an assignment on 14/04/2024 and that availability is removed, that assignment will also be removed.
What you should see:
Listing all volunteers : list
See everything ! Displays the volunteer list with all volunteer contacts.
Format: list
What you should see:
Locating volunteers by name: find
Looking for something specific ? Use this to find and display a filtered volunteer list containing volunteers matching the search.
Format: find [n/NAME]… [a/AVAILABILITY]…
- The search is case-insensitive. e.g
hans
will matchHans
- At least one of the optional fields must be provided.
- The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
- Partial words will be matched e.g.
Han
will matchHans
- Volunteers matching at least one keyword will be returned (i.e.
OR
search). e.g.Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find n/John
returnsjohn
,John
,John Doe
and so on… -
find n/alex david
returnsAlex Yeoh
,David Li
-
find n/alex n/david
returnsAlex Yeoh
,David Li
-
find a/23/05/2024
returns volunteers who are available on23/05/2024
-
find a/23/05/2024 a/24/05/2024
returns volunteers who are available on either23/05/2024
or24/05/2024
-
find n/alex a/23/05/2024
returns volunteers withalex
in name or volunteers available ona/23/05/2024
What you should see after find n/John
:
Deleting a volunteer : delete
Forgive and forget , deletes the specified volunteer that are no longer with us from the volunteer contacts .
Format: delete INDEX
- Deletes the volunteer at the specified
INDEX
. - The index refers to the index number shown in the displayed volunteer list.
- The index must be a positive integer 1, 2, 3, …
Take note:
-
As delete is deemed as a critical operation, you will see a confirmation message.
-
Do not panic, entering
y
following it will delete proceed to delete the specified entry, while entering anything else will default to cancelling the operation. -
Deleting a volunteer will result in the volunteer assigned to an assignment to be deleted as well.
Examples:
-
list
followed bydelete 2
deletes the 2nd volunteer in the volunteer contacts. -
find Betsy
followed bydelete 1
deletes the 1st volunteer in the results of thefind
command.
Caution: Remove a volunteer will also remove all of his/her assignments. Be careful with removing volunteers.
Clearing all entries : clear
Start anew , clear all volunteer entries from the volunteer contacts when everything is over.
Format: clear
Take note:
-
As clear is deemed as a critical operation, you will see a confirmation message.
-
Do not panic, entering
y
following it will delete proceed to delete the specified entry, while entering anything else will default to cancelling the operation.
Assigning volunteers : assign
Never forget another volunteering assignment , add an assignment to a volunteer.
Format: assign INDEX d/ASSIGNMENT_DETAILS a/AVAILABILITY
- Assigns the volunteer at the specified
INDEX
. The index refers to the index number shown in the displayed volunteer list. The index must be a positive integer 1, 2, 3, … - Availability must be in the format of DD/MM/YYYY eg:
28/03/2024
- The volunteer at the specified
INDEX
must be available on theAVAILABILITY
entered. - Each volunteer can only be assigned 1 volunteer activity per day.
-
ASSIGNMENT_DETAILS
must be alpha-numeric and cannot be empty. eg:Willing Hearts
Examples:
assign 1 d/Tutoring a/01/01/2024
assign 2 d/Elderly Care a/02/03/2024
What you should see:
Listing all assignments : lista
See everything ! Displays the assignment list with all assignments.
Format: lista
list
Remove assignments : removeassign
Oh, no the assignment has been cancelled . Use this to remove an assignment from the assignment list.
Format: removeassign INDEX
- Removes the assignment at that
INDEX
. The index refers to the index number shown in the assignment list. The index must be a positive integer 1, 2, 3, …
Take Note:
- This command can still run when the volunteer list is being displayed. The assignment removed will be the assignment with
INDEX
in the assignment list.
Examples:
removeassign 1
removeassign 2
Refreshing availabilities : refresh
Keep your data sparkling clean , remove any outdated availabilities based on the today’s date from volunteer contacts.
Format: refresh
Caution: Similar to removing availabilities, refresh will cascade delete all assignments affected. For example, if Alice has an assignment on 14/04/2024 and that availability is removed, that assignment will also be removed.
Copying emails : copy
Remember the good old Ctrl
+ c
? Copies the email addresses of all volunteers in the currently filtered volunteer list to the clipboard.
Format: copy
- The email addresses will be copied in a comma-separated format, e.g.
john@example.com, jane@example.com, ...
. - An error message will appear if the filtered volunteer list contains no volunteers.
Take Note:
- This command can still be used when the assignment list is being displayed. All volunteers’ email addresses will be copied.
Examples:
-
list
followed bycopy
copies all email addresses in the app. -
find n/john
followed bycopy
copies the email addresses of volunteers whose names contain “john”.
What you should see: After pasting copied emails into Gmail:
Exporting to CSV: export
Impress your boss with this your own custom report from CSV. Export your way to victory ! Exports volunteer and assignment data to a comma-separated values (CSV) file located at [JAR file location]/data
. Both volunteers and assignments are exported as persons.csv
and assignments.csv
respectively.
Format: export
Take Note:
- When using the application for the first time, executing the
export
command when theaddressbook.json
is missing will result in an error. Try executing other commands first. This will resultaddressbook.json
file to be created. - When the
persons.csv
orassignments.csv
files are being used by another application runningexport
command will result in an error.
Viewing help : help
I am too noob , will someone help me? Never fear this shows a message explaining how to access the help page.
Format: help
What you should see:
Exiting the program : exit
Sad to see you go , this exits the program.
Format: exit
Accessing the command history
Superpower to see the past .
To access the command history:
- From the input field, press the down arrow key (↓) to bring out the drop-down menu of previous commands.
- Use the up (↑) and down (↓) arrow keys to navigate through the command history.
Take Note
- After you enter a command, the command history will automatically close. If you wish to close the command history manually, you have two options:
- Press the
Ctrl
key on your keyboard. - Click anywhere outside of the command history dropdown.
- Press the
- Long input commands will be truncated when viewed in the command history. This has no effect on the functioning of the command history or the execution of previous commands.
What you should see:
Using the autocomplete
Become the fastest typist ! Autocomplete provides suggestions based on your command history as you type. You can navigate through the suggestions using the arrow keys, similar to the command history.
What you should see:
Saving the data
Match data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Data cascading
As persons
and assignments
list are related performing actions on one of the lists will result changes to be cascaded to ensure data consistency.
Editing the data file
Match data are saved automatically as a JSON file [JAR file location]/data/addressbook.json
. Advanced users are welcome to update data directly by editing that data file.
Furthermore, certain edits can cause the Match to behave in unexpected ways (e.g., if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
FAQ
Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous Match home folder.
Q: Why are all of my volunteers and assignments suddenly gone?
A: The problem is most likely that your JSON file is corrupted or edited. Be careful on not to edit your JSON file directly and only use commands to do so.You can solve this by manually adding your volunteers and assignments again.
Known issues
-
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.json
file created by the application before running the application again. - Invisible input caret, there are times when the input caret (cursor) may become invisible even though the input field has focus. To resolve this, regain focus in the input field by pressing the Tab key a few times.
Command summary
Action | Format, Examples |
---|---|
Add |
add n/NAME p/PHONE_NUMBER e/EMAIL [a/AVAILABILITY]… [t/TAG]… e.g., add n/James Ho p/96311212 e/jamesho@example.com a/25/05/2024 t/elderly t/food
|
Edit |
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/AVAILABILITY]… [t/TAG]… e.g., edit 2 n/James Lee e/jameslee@example.com
|
Add Availability |
addavail INDEX a/AVAILABILITY e.g., addavail 1 a/01/01/2024
|
Remove Availability |
removeavail INDEX a/AVAILABILITY e.g., removeavail 1 a/01/01/2024
|
List | list |
Find |
find [n/NAME]… [a/AVAILABILITY]… e.g., find n/James n/Jake
|
Delete1 |
delete INDEX e.g., delete 3
|
Clear1 | clear |
Assign |
assign INDEX d/ASSIGNMENT_DETAILS a/AVAILABILITY e.g., assign 1 d/Food Distribution a/01/01/2024
|
List Assignments | lista |
Remove Assignments |
removeassign INDEX e.g. removeassign 1
|
Refresh | refresh |
Copy | copy |
Export | export |
Help | help |
Exit | exit |