User Guide
CONNECTIONS is a desktop app for managing contacts and keeping tracks of birthdays, 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, CONNECTIONS can get your contact management tasks done faster than traditional GUI apps.
- Quick Start
-
Features
- Upcoming birthdays
- Command Assistant
- Command History
-
Commands
- Viewing help :
help - Adding a contact:
add - Listing all contacts :
list - Editing a contact :
edit - Adding Tags :
tag - Removing Tags :
untag - Locating contacts by name and tag(s):
find - Locating contacts by name or tag(s):
findAny - Pinning a contact:
pin - Unpinning a contact:
unpin - Deleting a contact :
delete - Deleting multiple contact :
deletem - Exporting a mailing list of contacts:
mailingList - Clearing all entries :
clear - Exiting the program :
exit
- Viewing help :
- FAQ
- Command Summary
Quick start
-
Ensure you have Java
11or above installed on your computer. -
Download the latest
CONNECTIONS.jarfrom here. -
Copy the file to the folder you want to use as the home directory for your CONNECTIONS.
-
Double-click the file to start the app. The 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
helpand pressing Enter will show a list of commands that CONNECTIONS supports.
Click here for a summary of example commands you can try! -
Refer to the Features below for details of each command.
Features
Notes about the command format:
-
Words in
UPPER_CASEare the parameters to be supplied by the user.
e.g. inadd n/NAME,NAMEis a parameter which can be used asadd n/John Doe. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]can be used asn/John Doe t/friendor asn/John Doe. -
Items with
… after them can be used multiple times including zero times.
e.g.[t/TAG]…can be used as(i.e. 0 times),t/friend,t/friend t/familyetc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis also acceptable. -
If a parameter is expected only once in the command, but you specified it multiple times, only the last occurrence of the parameter will be taken.
e.g. if you specifyp/12341234 p/56785678, onlyp/56785678will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
list,exitandclear) will be ignored.
e.g.list 123will be interpreted aslist. -
Phone numbers can be of any length, but can only contain numerical digits.
-
Command words are case-sensitive. e.g.
findanywill not be interpreted asfindAny.
Upcoming Birthdays
The vertical tab provides upcoming birthdays at a glance. Having this means that you will never miss a birthday. It sorts all birthdays amongst all contacts in CONNECTIONS chronologically, with the nearest upcoming birthday at the top.
- Contacts color-coded in GREEN are celebrating their birthdays today.
- Contacts color-coded in BLUE will be celebrating their birthdays in a week or less.
- The rest of the entries will not be color-coded.
Command Assistant
Shows command format and example as the command is entered for a smoother learning curve.
Sample Usage:
-
editis entered in the command box.- CONNECTIONS shows command format and sample for
edit.
- CONNECTIONS shows command format and sample for
-
tagis entered in the command box.- CONNECTIONS shows command format and sample for
tag.
- CONNECTIONS shows command format and sample for
Command History
View and use previously called commands to minimize typing of repeated commands.
Notes:
- Only commands that have been used in the current program run can be viewed. Commands used in previous runs are not stored.
Sample Usage:
- Up Arrow
- Shows the previous command called in the command box.
- If there are no previous commands, an empty command box is shown.
- If the earliest command is shown, earliest command will continue to be shown.
- Down Arrow
- Shows the next command called in the command box.
- If there are no later commands, an empty command box is shown.
Commands
Viewing help : help
Shows a help message that explains the purpose and method of usage for each command for a smoother learning curve.
Format:
-
help- List out all available commands. -
help COMMAND- Shows help message for the command specified.
Notes:
- Use the command
help moreto open a link to the documentation.
Sample Usage:
-
help- Shows all available commands.
- Shows all available commands.
-
help add- Shows help message for
add.
- Shows help message for
-
help more- Opens a link to the documentation.
- Opens a link to the documentation.
Adding a contact: add
Adds a contact to CONNECTIONS.
Format:
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [b/BIRTHDAY] [t/TAG]…
ddMMyyyy.
Notes:
- Phone numbers must be unique and must contain only numbers.
- Emails must contain @. (Valid emails that violate convention are accepted as well)
- Birthdays are optional and can be added to existing contacts using the
editcommand. - Future dates are not allowed as birthdays.
- Tag names are limited to 60 characters.
Sample Usage:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01add n/Betsy Crowe t/friend e/betsycrowe@example.com a/Newgate Prison b/25121999 p/1234567 t/criminal
Listing all contacts : list
Shows a list of all contacts in CONNECTIONS.
Format:
list
Editing a contact : edit
Edits an existing contact in CONNECTIONS.
Format:
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…
Notes:
- Edits the contact at the specified
INDEX. The index refers to the index number shown in the displayed contact list. The index must be a positive integer 1, 2, 3, … - There must be at least one of the optional fields provided alongside the edit command.
- Existing values will be updated to the input values.
- The existing set of tags that belongs to a contact will be updated to the new set of tags inputted. i.e. The edits made to a set of tags are not cumulative.
- You can remove all tags of a particular contact using
edit INDEX t/(without providing anything aftert/).
Sample Usage:
-
edit 1 p/91234567 e/johndoe@example.com- Edits the phone number and email address of the 1st contact in the displayed contact list to be
91234567andjohndoe@example.com, respectively.
- Edits the phone number and email address of the 1st contact in the displayed contact list to be
-
edit 2 n/Betsy Crower t/- Edits the name of the 2nd contact in the displayed contact list to be
Betsy Crowerand clears all existing tags.
- Edits the name of the 2nd contact in the displayed contact list to be
Adding Tags : tag
Adds one or more tags to an existing contact in CONNECTIONS. This facilitates the organization of contacts into groups.
Format:
tag INDEX t/TAG [t/MORE_TAGS]…
Notes:
- Adds tag(s) to the contact at the specified
INDEX. The index refers to the index number shown in the displayed contact list. The index must be a positive integer 1, 2, 3, … - New tags are added on top of existing tags i.e., tags added are cumulative.
- Adding new tags which already exist will succeed with a warning letting you know that the contact already had those tags.
- Tags have a character limit of 60.
Sample Usage:
-
tag 2 t/friend t/NUS- Adds the tags
friendandNUSto the 2nd contact.
- Adds the tags
Removing Tags : untag
Removes one or more existing tags from an existing contact in CONNECTIONS.
Format:
untag INDEX t/TAG [t/MORE_TAGS]…
Notes:
- Remove tags from the contact at the specified
INDEX. The index refers to the index number shown in the displayed contact list. The index must be a positive integer 1, 2, 3, … - Only tags that exist will be removed.
- CONNECTIONS displays a warning and will not remove any tags if the user tries to remove a non-existent tag.
Sample Usage:
-
untag 2 t/friend t/NUS- Removes the tags
friendandNUSfrom the 2nd contact.
- Removes the tags
Locating contacts by name(s) and tag(s): find
Finds all contacts who match ALL name and tag keywords provided. This narrows your search so that you will be able to filter contacts with greater specificity.
The commands find and findAny will filter the displayed contacts and only display the matching results.

Format:
-
find [c/] [n/NAME] … [t/TAG] …- Note that
findmust have at least one[n/NAME]or[t/TAG].
- Note that
Notes:
-
findis case-insensitive for names. e.g.find n/hanswill match contacts namedHans. -
findis case-insensitive for tags by default. e.g.find t/friendwill match a contact with tagsFriendorfriend.- Adding the
c/flag after the command word will make tag matching case-sensitive.
e.g.find c/ t/friendwill match a contact with tagfriendbut notFriend.
- Adding the
- The order of the keywords does not matter. e.g.
find n/Hans t/footballwill return the same result asfind t/football n/Hans. - Only full words will be matched for names and tags.
-
find n/anwill not returnHans, but will returnJing An.
-
- Only contacts that matched all keywords provided will be returned as search results (i.e.
ANDsearch).
e.g.find n/Hans t/Friendwill return all contacts with names containing the wordHansand are tagged withFriend.
Sample Usage:
-
find n/John- returns
johnandJohn Doe.
- returns
-
find n/alex t/football t/classmate- returns
Alex Yeoh, who has bothfootballandclassmatestag.
- returns
-
find c/ t/FRIENDS- returns
Shin, who is tagged withFRIENDS.
- returns
Locating contacts by name(s) or tag(s): findAny
Finds all contacts who match ANY name and tag keywords provided. This broadens your search so that you will be able to filter contacts with greater flexibility.
Format:
-
findAny [c/] [n/NAME] … [t/TAG] …- Note that
findAnymust have at least one[n/NAME]or[t/TAG].
- Note that
Notes:
-
findAnyis case-insensitive for names. e.g.findAny n/hanswill match contacts namedHans. -
findAnyis case-insensitive for tags by default. e.g.findAny t/friendwill match a contact with tagsFriendorfriend.- Adding the
c/flag after the command word will make tag matching case-sensitive.
e.g.findAny c/ t/friendwill match a contact with tagfriendbut notFriend.
- Adding the
- The order of the keywords does not matter. e.g.
findAny n/Hans t/footballwill return the same result asfindAny t/football n/Hans. - Only full words will be matched for names and tags.
-
findAny n/anwill not returnHans, but will returnJing An.
-
- Only contacts that match at least one of the keywords provided will be returned as search results (i.e.,
ORsearch) e.g.findAny n/Hans t/Friendwill return all contacts with names containing the wordHansor are tagged withFriend.
Sample Usage:
-
findAny n/John- returns
johnandJohn Doe.
- returns
-
findAny n/alex n/irfan t/chef- returns
Alex Yeoh,Irfan Ibrahim,Carolwho is tagged withchef.
- returns
-
findAny c/ n/Shin t/FRIENDS t/chef- returns
Shinwho is tagged withFRIENDS, as well asCarolwho is tagged withchef.
- returns
Pinning a contact : pin
Pins a contact to the top of the contact list. This makes it easier to refer to the details of frequent contacts.
Pinned contacts will appear at the top of the unfiltered list

Format:
pin INDEX
Notes:
- Pins the contact at the specified
INDEX. - The index refers to the index number shown in the displayed contact list.
- The index must be a positive integer 1, 2, 3, …
Sample Usage:
-
listfollowed bypin 2- pins the 2nd contact in CONNECTIONS.
-
find n/Betsyfollowed bypin 1- pins the 1st contact in the results of the
findcommand.
- pins the 1st contact in the results of the
Unpinning a contact : unpin
Unpins a contact.
Format:
unpin INDEX
Notes:
- Unpins the contact at the specified
INDEX. - The index refers to the index number shown in the displayed contact list.
- The index must be a positive integer 1, 2, 3, …
Sample Usage:
-
listfollowed byunpin 2- unpins the 2nd contact in CONNECTIONS.
-
find n/Betsyfollowed byunpin 1- unpins the 1st contact in the results of the
findcommand.
- unpins the 1st contact in the results of the
Deleting a contact : delete
Deletes the specified contact from the address book.
Format:
delete INDEX
Notes:
- Deletes the contact at the specified
INDEX. - The index refers to the index number shown in the displayed contact list.
- The index must be a positive integer 1, 2, 3, …
Sample Usage:
-
listfollowed bydelete 2- deletes the 2nd contact in CONNECTIONS.
-
find n/Betsyfollowed bydelete 1- deletes the 1st contact in the results of the
findcommand.
- deletes the 1st contact in the results of the
Deleting multiple contacts : deletem
Deletes the contacts within the range from CONNECTIONS. This makes the removal of multiple contacts easy.
Format:
deletem START_INDEX - END_INDEX
Notes:
- Deletes the contacts within the specified range from
START_INDEX to END_INDEX. - The indexes refer to index numbers shown in the displayed contact list.
- The indexes must be a positive integer 1, 2, 3, …
-
END_INDEXmust be greater than or equal toSTART_INDEX.
Sample Usage:
-
listfollowed bydeletem 2 - 3- deletes the 2nd and 3rd contacts in the CONNECTIONS.
-
find n/Betsyfollowed bydeletem 1 - 5- deletes the 1st to 5th contacts in the results of the
findcommand.
- deletes the 1st to 5th contacts in the results of the
Exporting a mailing list of contacts : mailingList
Exports a CSV file of the current view containing specified fields. This helps you to make external notes when organizing birthday parties.
Format:
mailingList [p/] [e/] [a/] [b/] [t/]
Notes:
- Name is always the first column in the CSV file.
- Including any of the arguments will include that field in the exported CSV file.
- Each argument represents:
-
p/phone number -
e/email -
a/address -
b/birthday -
t/tags
-
- The default exported fields are name, phone, email.
- Opens a file selector for you to pick the export location and file name.
Sample Usage:
-
mailingList- Prepares a CSV of the current view containing Name, Phone and Email as the fields.
-
mailingList p/- Prepares a CSV of the current view containing Name and Phone as the fields.
Clearing all entries : clear
Clears all entries from CONNECTIONS.
Format:
clear
Exiting the program : exit
Exits the program.
Format:
exit
Saving the data
CONNECTIONS data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
CONNECTIONS data are saved as a JSON file [JAR file location]/data/CONNECTIONS.json. Advanced users are welcome to update data directly by editing that data file.
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 CONNECTIONS home folder.
Command Summary
| Action | Summary | Format, Examples |
|---|---|---|
| Help | Displays help information |
help [COMMAND]e.g., help, help add, help more
|
| Add | Adds a contact |
add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS [b/BIRTHDAY] [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 b/23062001 t/friend t/colleague
|
| List | Lists all contacts | list |
| Edit | Edits a contact |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [b/BIRTHDAY] [t/TAG]…e.g., edit 2 n/James Lee e/jameslee@example.com b/30012000 At least one argument must be present |
| Tag | Tags a contact |
tag INDEX t/TAG [t/MORE_TAGS]…e.g., tag 2 t/friend t/NUS
|
| Untag | Untags a contact |
untag INDEX t/TAG [t/MORE_TAGS]…e.g., untag 2 t/colleague
|
| Find | Locates contacts by name and tags (Results fulfill all search terms) |
find [c/] [n/NAME]... [t/TAG]... e.g., find n/James t/friends At least one argument must be present |
| FindAny | Locates contacts by name and tags (Results fulfill at least one search term) |
findAny [c/] [n/NAME]... [t/TAG]...e.g., findAny n/James t/NUS At least one argument must be present |
| Pin | Pins a contact |
pin INDEXe.g., pin 1
|
| Unpin | Unpins a contact |
unpin INDEXe.g., unpin 1
|
| Delete | Deletes a contact |
delete INDEXe.g., delete 3
|
| Deletem | Deletes multiple contacts within the range |
deletem START_INDEX - END_INDEXe.g., deletem 3 - 5
|
| MailingList | Exports a mailing list |
mailingList [p/] [e/] [a/] [b/] [t/] e.g., mailingList [p/] [e/] [b/]
|
| Clear | Clears all entries | clear |
| Exit | Exits the program | exit |