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
11
or above installed in your Computer. -
Download the latest
networkus.jar
from 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
enter
to execute it. e.g. typinghelp
and pressingenter
will open the help window.
Some example commands you can try:-
list
: Lists all contacts. -
add
n/John Doe p/98765432 e/johnd@example.com
: Adds a contact namedJohn Doe
to the NetworkUS. -
delete
3
: 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_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
. -
Items in square brackets are optional.
e.gn/NAME [t/TAG]
can be used asn/John Doe t/friend
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/friend
,t/friend t/family
etc. -
Parameters with prefixes can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER
,p/PHONE_NUMBER n/NAME
is 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/56785678
will be taken. -
Additional parameters for commands that do not take in parameters will be ignored. (such as
help
,list
,exit
andclear
)
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/91234567
add 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.com
Edits the phone number and email address of the 1st person to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to beBetsy Crower
and 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 john
will 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 smith
will returnJohn Fletcher
andSmith George
Examples:
-
find John
will returnjohn
,John Doe
andAaron john
-
find jonas aaron silva
will returnjonas
,Aaron john
andAnn Silva
-
find friends
will return anyone whose names or tags have the wordfriends
in 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
github
orlinkedin
Examples:
-
list
followed byopen 2 3 4 github
opens the Github page of the 2nd, 3rd, and 4th person of the displayed contacts list. -
find Betsy
followed byopen 1 linkedin
opens the LinkedIn page of the 1st person in the results of thefind
command

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:
-
list
followed bydelete 2
deletes the 2nd person in the displayed contacts list. -
find Betsy
followed bydelete 1
deletes the 1st person in the results of thefind
command.
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 1
will 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:
-
list
followed bytag 1 2 programmer
tags the 1st and 2nd persons in the global contacts list with a programmer tag. -
find John
followed bytag 1 2 programmer
tags the 1st and 2nd persons in the results of thefind
command 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:
-
list
followed bytagall programmer
tags all persons in the global contacts list with the tagprogrammer
. -
find Alex
followed bytagall CS2103T
tags all persons in the results of thefind
command 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:
-
list
followed byuntag 1 2 friend
deletes friend tag from 1st and 2nd persons in the global contacts list. -
find John
followed byuntag 1 2 friend
deletes friend tag from the 1st and 2nd persons in the results of thefind
command.
Untagging displayed contacts: untagall
Deletes the specified tag from all displayed contacts in NetworkUS.
Format: untagall TAG
- Deletes specified
TAG
from all displayed contacts. - Tag must consist of letters and/or numbers without spaces.
Example:
-
list
followed byuntagall CS2040
deletes 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
TAG1
withTAG2
for all contacts. -
TAG1
is the tag to be replaced. -
TAG2
is the new tag to replaceTAG1
. - Tags must consist of letters and/or numbers without spaces.
Example:
-
list
followed byreplacetag CS2040 CS2030
replaces 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 -A
as an alias fortagall
command - Create
tag -D
as an alias foruntag
command
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
ALIAS
for commandCOMMAND
. -
ALIAS
can contain spaces, but cannot be empty. -
COMMAND
must 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 -A
will match the commandtag -A parameter
, buttag -AD parameter
will not be matched even thoughtag -A
matches 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 -A
as commandtagall
-
tag -A -D
as commanduntagall
-
- The command
tag -A -D OS
will be replaced asuntagall OS
because 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 -A
will create an aliastag -A
for thetagall
command, allowingtag -A
to representtagall
. -
alias tagall tag
will throw an error astag
is an existing NetworkUS command. You cannot create alias as an existing command name. -
alias notACommand tag -A
will throw an error asnotACommand
is not an existing NetworkUS command. You are only able to create an alias for existing commands. -
alias tag add n/Your Name
will create aliasadd n/Your Name
for thetag
command. 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:
-
showalias
will show the aliases in a new window.
Dealiasing commands : deletealias
Deletes an existing alias.
Format: deletealias ALIAS
- Deletes the specified alias.
-
ALIAS
must be an existing alias in NetworkUS.
Example:
-
deletealias tag -A
will 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 ALIAS e.g., alias tagall tag -A
|
Clear | clear |
Delete |
delete INDEX e.g., delete 3
|
Delete alias |
deletealias ALIAS e.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 TAG2 e.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 TAG e.g., untag 1 2 friend
|
Untag all |
untagall TAG e.g., untagall friend
|