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 contacts in the displayed contacts 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 contact: add
Adds a contact to the list of contacts. You cannot add duplicate contacts in the contact book.
Format: add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [g/GITHUB_USERNAME] [l/LINKEDIN] [d/DETAIL] [t/TAG]…
* A contact 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 contacts: list
Shows a list of all contacts in the global contacts and the total number of contacts.
Format: list
Editing a contact: edit
Edits an existing contact in the list of contacts.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [g/GITHUB_USERNAME] [l/LINKEDIN] [d/DETAIL] [t/TAG]…
- Edits the contact 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 contact will be replaced.
- You can remove all the contact’s tags by typing
t/
without specifying any tags after it. The same applies for descriptiond/
. - Edited contact should not result in duplicate contacts in the contact book.
Examples:
-
edit 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st contact to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd contact to beBetsy Crower
and clears all existing tags. -
edit 2 p/ g/
Removes the phone number and github user of the 2nd contact.
* 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 contacts: find
Find contacts 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.
- Contacts 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 contact: open
Opens the LinkedIn/Github page from details of field specified of a particular contact 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 contact of the displayed contacts list. -
find Betsy
followed byopen 1 linkedin
opens the LinkedIn page of the 1st contact in the results of thefind
command
Deleting a contact: delete
Deletes the specified contact from the NetworkUS contacts.
Format: delete INDEX
- Deletes the contact 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 contact in the displayed contacts list. -
find Betsy
followed bydelete 1
deletes the 1st contact in the results of thefind
command.
Showing contact: show
Shows the specified contact’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 contact 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 tags to categorize your contacts as you wish. You can tag them based on their modules taken, field of specialization or personality. This would help when you want to find suitable teammate for projects, assignments, or hackathons. For instance, you can tag certain contacts with OS to indicate that the person has a specialization in operating systems. You can then find all contacts that have a specialization in OS by using the command find OS
. The following are details of the tagging-related commands.
Tagging contacts: tag
Tags the specified contacts from the NetworkUS contacts with the specified tag.
Format: tag INDEXES TAG
- Tags the contacts 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 contacts.
Examples:
-
list
followed bytag 1 2 programmer
tags the 1st and 2nd contacts in the global contacts list with a programmer tag. -
find John
followed bytag 1 2 programmer
tags the 1st and 2nd contacts 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 contacts in the global contacts list with the tagprogrammer
. -
find Alex
followed bytagall CS2103T
tags all contacts in the results of thefind
command with the tagCS2103T
.
Untagging contacts: untag
Delete the specified tag from the specified contact from the NetworkUS contacts.
Format: untag INDEXES TAG
- Deletes the tag from the contact 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 contacts in the global contacts list. -
find John
followed byuntag 1 2 friend
deletes friend tag from the 1st and 2nd contacts 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 contacts: 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.
Q: How do I import existing contacts to NetworkUS?
A: Unfortunately, NetworkUS does not support importing contact from external sources. You have to put in the contacts one by one.
Q: Any tips on managing my contacts?
A: You can tag your contacts with their fields of expertise, personalities, etc. You can use the find command to find contacts with desired traits.
Q: How can I work faster?
A: You can alias an existing commands with a shorter alias. Example: ta
for the tagall
command.
Q: Can non CS students use this application?
A: Yes. While the fields and functionalities for this release are designed for CS students, anyone can use it to store contacts as a generic contact book management software.
Q: Why is the data stored offline?
A: Ease of storage accessibility and security reasons.
Q: Can I use NetworkUS on my mobile phone?
A: NetworkUS can only be used on Java-supported mobile phones.
Q: Why are my alias preferences empty / not updating?
A: Try moving the NetworkUS app to a new empty folder and running the jar file again.
Q: How do I form a group using the app?
A: You can group contacts together under the same tag by using the tag function and specifying their indexes.
Q: Why can’t I make an alias using some specific words?
A: Refer to the section on examples under the alias command to see what words are not available for use as an alias.
Miscellaneous
Duplicate detection
Checked fields: Phone
, Email
, Github
and Linkedin
A contact is considered a duplicate in any of the below cases:
- All of that contact’s Checked fields are empty, and there is another contact with the same name and also having all their Checked fields empty.
- That contact 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 contact 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
|