User Guide
NetworkUS is a desktop app for organizing contacts. It features seamless group management, allowing for quick searches of contacts with desired traits (i.e specialization) and hence project group formation. It is catered for Computer Science Students. The app is optimized for the Command Line Interface (CLI) to allow swift access for keyboard users. The app is also complemented with Graphical User Interface (GUI) to display the program.
- Before you read
- How to use the guide
- Quick start
- User Interface
- Features
- Tagging features
- Alias Features
- Data Storage
- FAQ
- Miscellaneous
- Glossary
- Command summary
Before you read
This user guide is for users who want to use NetworkUS for their daily use or developer who wants to find out what this app does before contributing to the project. This user guide will guide you on how to use NetworkUS to manage your contacts.
How to use the guide
If this is the first time you are using NetworkUS, please refer to the quick start section to set up and start using NetworkUS.
If you are looking for a general overview of the commands refer to the command summary section.
If you are unclear of what the command formats mean in the various explanations refer to the features section.
If you are unsure of the meaning of any terms within this user guide, please refer to the glossary.
To jump to any particular section please refer to the table of contents found at the top of this guide.
Quick start
-
Ensure you have Java
11or above installed in your Computer. -
Download the latest
networkus.jarfrom here. -
Copy the file to the folder you want to use as the home folder for your NetworkUS app.
-
Double-click the file to start the app. The GUI below should appear in a few seconds. Note how the app contains some sample data.

-
Type the command in the command box and press
enterto execute it. e.g. typinghelpand pressingenterwill open the help window.
Some example commands you can try:-
list: Lists all contacts. -
addn/John Doe p/98765432 e/johnd@example.com: Adds a contact namedJohn Doeto the NetworkUS. -
delete3: Deletes the 3rd contact shown in the current list. -
clear: Deletes all contacts. -
exit: Exits the app.
-
-
Refer to the Features below for details of each command.
User Interface

The image above shows the UI Components :
- Menu Bar : shows the ‘Help’ and ‘Show Alias’ option.
- Command Bar : location for entering commands.
- Result Display : shows result feedback from commands.
- Contact List : shows the current contacts.
- Footer : shows file path of the storage file and the total number of contacts.
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.gn/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 with prefixes 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 with prefix 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. -
Additional parameters for commands that do not take in parameters will be ignored. (such as
help,list,exitandclear)
e.g. if the command specifieshelp 123, it will be interpreted ashelp. -
INDEXES allows multiple INDEX to be entered with each INDEX being separated with a space.
e.g. if you specifytag 1 2 3 cs2030, it will tag first, second and third persons in the displayed contact list.
Viewing help : help
Provides functionality to access the help page in the browser.

Format: help
Keyboard shortcut alternative: f1 then press enter
Adding a person: add
Adds a person to the list of contacts. You cannot add duplicate persons in the contact book.
Format: add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [g/GITHUB_USERNAME] [l/LINKEDIN] [d/DETAIL] [t/TAG]…
* A person can have any number of tags (including 0)
* View the duplicate-detection section to find out what is considered as a duplicate contact.
* View the valid-field section to find out what is considered as valid field.
Examples:
add n/Johnny Sim p/91234567add n/Betsy Crowe t/friend e/betsycrowe@example.com p/1234567 t/criminal g/lovelyprisoner
Listing all persons : list
Shows a list of all persons in the global contacts and the total number of contacts.
Format: list
Editing a person : edit
Edits an existing person in the list of contact.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GITHUB_USERNAME] [l/LINKEDIN] [d/DETAIL] [t/TAG]…
- Edits the person at the specified
INDEX. The index refers to the index number shown in the displayed contacts 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.
- When editing tags, the existing tags of the person will be replaced.
- You can remove all the person’s tags by typing
t/without specifying any tags after it. The same applies for descriptiond/. - Edited person should not result in duplicate persons in the contact book.
Examples:
-
edit 1 p/91234567 e/johndoe@example.comEdits the phone number and email address of the 1st person to be91234567andjohndoe@example.comrespectively. -
edit 2 n/Betsy Crower t/Edits the name of the 2nd person to beBetsy Crowerand clears all existing tags. -
edit 2 p/ g/Removes the phone number and github user of the 2nd person.
* You can remove specified fields by typing the field’s prefix only. This applies for all fields except Name.
* View the duplicate-detection section to find out what is considered as a duplicate contact.
* View the valid-field section to find out what is considered as valid field.
Finding persons: find
Finds persons whose names or tags contain any of the given keywords from the list of contacts.
Format: find KEYWORD [MORE_KEYWORDS]
- The command is not case-sensitive,
find johnwill matchJohn - Currently, only the name and their tags are searched.
- Persons whose names or tags match at least one keyword will be returned.
find john smithwill returnJohn FletcherandSmith George
Examples:
-
find Johnwill returnjohn,John DoeandAaron john -
find jonas aaron silvawill returnjonas,Aaron johnandAnn Silva -
find friendswill return anyone whose names or tags have the wordfriendsin them
Opening a field of a person : open
Opens the LinkedIn/Github page from details of field specified of a particular person from the NetworkUS contacts.
Format: open INDEXES FIELD
- The index contained in indexes refers to the index number shown in the displayed contacts list.
- The index must be a positive integer 1, 2, 3, …
- The Field must be
githuborlinkedin
Examples:
-
listfollowed byopen 2 3 4 githubopens the Github page of the 2nd, 3rd, and 4th person of the displayed contacts list. -
find Betsyfollowed byopen 1 linkedinopens the LinkedIn page of the 1st person in the results of thefindcommand
Deleting a person : delete
Deletes the specified person from the NetworkUS contacts.
Format: delete INDEX
- Deletes the person at the specified
INDEX. - The index refers to the index number shown in the displayed contacts list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
listfollowed bydelete 2deletes the 2nd person in the displayed contacts list. -
find Betsyfollowed bydelete 1deletes the 1st person in the results of thefindcommand.
Showing person : show
Shows the specified person’s full contact information in a separate window. Will show any truncated details or fields that are too long.

Format: show INDEX
- Index must be the index that is in the currently visible list.
Example:
-
show 1will show the full details of the person with the specified index.
Clearing all entries : clear
Clears all entries from the global contacts list.
Format: clear
Exiting the program : exit
Exits the program.
Format: exit
Tagging features
You can use tag to categorize your contacts as you wish. You can tag them based on their modules taken, field of specialization or personality. This helps a lot when you want to find suitable project mate. For instance, you can tag certain contacts with OS to indicate that the person has specialization in operating systems. You can find all contacts that have specialization in OS by using the command find OS. The following are details of the tagging-related commands.
Tagging persons : tag
Tags the specified persons from the NetworkUS contacts with the specified tag.
Format: tag INDEXES TAG
- Tags the persons at the specified
INDEXES. - The index refers to the index number shown in the displayed contacts list.
- The indexes must be positive integers 1, 2, 3, …
- Tag must consist of letters and/or numbers without spaces.
- Will not add duplicate tags to persons.
Examples:
-
listfollowed bytag 1 2 programmertags the 1st and 2nd persons in the global contacts list with a programmer tag. -
find Johnfollowed bytag 1 2 programmertags the 1st and 2nd persons in the results of thefindcommand with a programmer tag.
Tagging displayed contacts : tagall
Tags all displayed contacts in the NetworkUS contacts with the specified tag.
Format: tagall TAG
- Tags all displayed contacts with the specified
TAG. - Will not add duplicate tags and will run successfully even if all displayed contacts already have the tag.
- The tag must consist of letters and/or numbers without spaces e.g. programmer, CS2103T
Examples:
-
listfollowed bytagall programmertags all persons in the global contacts list with the tagprogrammer. -
find Alexfollowed bytagall CS2103Ttags all persons in the results of thefindcommand with the tagCS2103T.
Untagging persons: untag
Delete the specified tag from the specified person from the NetworkUS contacts.
Format: untag INDEXES TAG
- Deletes the tag from the person at the specified
INDEXES. - The index refers to the index number shown in the displayed contacts list.
- The indexes must be positive integers 1, 2, 3, …
- Tag must consist of letters and/or numbers without spaces.
Example:
-
listfollowed byuntag 1 2 frienddeletes friend tag from 1st and 2nd persons in the global contacts list. -
find Johnfollowed byuntag 1 2 frienddeletes friend tag from the 1st and 2nd persons in the results of thefindcommand.
Untagging displayed contacts: untagall
Deletes the specified tag from all displayed contacts in NetworkUS.
Format: untagall TAG
- Deletes specified
TAGfrom all displayed contacts. - Tag must consist of letters and/or numbers without spaces.
Example:
-
listfollowed byuntagall CS2040deletes CS2040 tag from all global contacts.
Replace tag from all entries: replacetag
Replaces the specified tag from all displayed contacts in NetworkUS with a new tag.
Format: replacetag TAG1 TAG2
- Replaces
TAG1withTAG2for all contacts. -
TAG1is the tag to be replaced. -
TAG2is the new tag to replaceTAG1. - Tags must consist of letters and/or numbers without spaces.
Example:
-
listfollowed byreplacetag CS2040 CS2030replaces CS2040 tag to CS2030 tag from all global contacts.
Showing tags : showtags
Shows all tags that are used in NetworkUS contacts.
Format: showtags
Alias Features
Alias helps you create more customized commands. You can shorten the existing commands, or even completely rename it with other names. Here are example use cases of alias:
- Create
tag -Aas an alias fortagallcommand - Create
tag -Das an alias foruntagcommand
The following are details of the alias-related commands
Aliasing commands : alias
Creates an alias for existing NetworkUS command.
Format: alias COMMAND ALIAS
- Creates an alias
ALIASfor commandCOMMAND. -
ALIAScan contain spaces, but cannot be empty. -
COMMANDmust be an existing command in NetworkUS (e.g.list,tagall,untag, etc.) - Aliases that you create will be saved.
- NetworkUS only replace your input with corresponding commands if the alias matches the prefix word(s) of your input.
- For example: the alias
tag -Awill match the commandtag -A parameter, buttag -AD parameterwill not be matched even thoughtag -Amatches the prefix of wordstag -AD.
- For example: the alias
- NetworkUS will check the longest matching alias in your input and change it with the corresponding command.
- For example: Suppose that you have created two aliases:
-
tag -Aas commandtagall -
tag -A -Das commanduntagall
-
- The command
tag -A -D OSwill be replaced asuntagall OSbecause the longest matching alias that matches the prefix word istag -A -D.
- For example: Suppose that you have created two aliases:
Example:
-
alias tagall tag -Awill create an aliastag -Afor thetagallcommand, allowingtag -Ato representtagall. -
alias tagall tagwill throw an error astagis an existing NetworkUS command. You cannot create alias as an existing command name. -
alias notACommand tag -Awill throw an error asnotACommandis not an existing NetworkUS command. You are only able to create an alias for existing commands. -
alias tag add n/Your Namewill create aliasadd n/Your Namefor thetagcommand. Note that this kind of alias is not recommended. See the caution section.
add n/Your Name as any tag or add or any other commands.
NetworkUS will not handle these cases for you.
Showing saved aliases : showalias
Shows all aliases stored in the user preferences in a new window.

Format: showalias
Keyboard Shortcut: F2
Example:
-
showaliaswill show the aliases in a new window.
Dealiasing commands : deletealias
Deletes an existing alias.
Format: deletealias ALIAS
- Deletes the specified alias.
-
ALIASmust be an existing alias in NetworkUS.
Example:
-
deletealias tag -Awill remove the aliastag -A.
Data Storage
Saving the data
Contact list data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
Contact data is saved as a JSON file [JAR file location]/data/contactbook.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 ContactBook home folder.
Miscellaneous
Duplicate detection
Checked fields: Phone, Email, Github and Linkedin
A person is considered a duplicate in any of the below cases:
- All of that person’s Checked fields are empty, and there is another contact with the same name and also having all their Checked fields empty.
- That person has the same name as another contact, and also at least one identical non-empty Checked field.
Valid Fields
Below are the requirements for what constitutes as valid for the fields in NetworkUS.
| Field | Format, Examples |
|---|---|
| Name | Only letters and/or numbers and spaces e.g., Sam Yeo
|
| Tag | Letters and/or numbers without spaces e.g., CS2103T , programmer
|
| Phone | Only numbers at least 3 digits long e.g., 999 , 62353535
|
local-part + @ + domain-name local-part contains letters, numbers and special characters excluding + - _ ., cannot start or end with special characters domain-name consists of domain labels seperated by periods domain labels consist of at least 2 letters and/or numbers domain labels excluding the last domain label can have non-consecutive hyphens but cannot start or end with a hyphen e.g., berniceyu@example.com
|
|
| Github | Only letters, numbers and hyphens Cannot start or end with a hyphen or have multiple consecutive hyphens Has a maximum length of 39 characters e.g., Alexio
|
| Any valid LinkedIn URL e.g., https://www.linkedin.com/in/benson/
|
|
| Details | Anything you can type in e.g., Quite literally anything you can type in.
|
Valid index
An index is valid if it is a positive integer.
Example of valid indexes: 1, 2, 3, …
Example of invalid indexes: -1, 0, *, +1, …
Glossary
Displayed contacts
All contacts displayed in NetworkUS application.
Most of the commands in NetworkUS act on the currently viewable list. Thus, whenever there are mentions of Index used in Commands it refers to the index of the currently displayed contacts list.
Here delete 3 will delete “Charlotte Oliviero”

Here delete 3 will show an error message as 3 is not shown (Even though it is in the original list).

Global contacts
All contacts that are stored in the NetworkUS.
Field
A field is specific information of a person in NetworkUS’s contact list like phone number.
JavaScript Object Notation (JSON)
JSON is the file format that NetworkUS uses to store the contacts.
Graphical User Interface (GUI)
A GUI is an interface that uses visual indicator to interact with the system.
Command Line Interface (CLI)
A CLI is a text-based interface that uses text input to interact with the system.
Command
A command is an instruction that you can use in NetworkUS to perform a certain task.
Prefix
Prefixes are unique identifiers in front of parameters which are used by NetworkUS to identify which fields the values belong to.
Alias
Aliases are alternative words that you can use to represent the standard commands that NetworkUS uses.
Command summary
| Action | Format, Examples |
|---|---|
| Add |
add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [g/GITHUB_USERNAME] [l/LINKEDIN] [d/DETAIL] [t/TAG]… e.g., add n/James Ho p/22224444 e/jamesho@example.com t/friend t/colleague
|
| Alias |
alias COMMAND ALIASe.g., alias tagall tag -A
|
| Clear | clear |
| Delete |
delete INDEXe.g., delete 3
|
| Delete alias |
deletealias ALIASe.g., deletealias tag -A
|
| Edit |
edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [g/GITHUB_USERNAME] [l/LINKEDIN] [d/DETAIL] [t/TAG]…e.g., edit 2 n/James Lee e/jameslee@example.com
|
| Find |
find KEYWORD [MORE_KEYWORDS]e.g., find James Jake
|
| Help | help |
| Open |
open INDEXES FIELD e.g., open 1 linkedin
|
| List | list |
| Replace tag |
replacetag TAG1 TAG2e.g., replacetag friend enemy
|
| Show alias | showalias |
| Show tags | showtags |
| Tag |
tag INDEXES TAG e.g., tag 1 2 programmer
|
| Tag all |
tagall TAG e.g., tagall programmer
|
| Untag |
untag INDEXES TAGe.g., untag 1 2 friend
|
| Untag all |
untagall TAGe.g., untagall friend
|