Meet LinkUp, a desktop app designed to help team leaders manage their contacts more efficiently and effectively. Optimized for users who prefer typing commands to use systems, LinkUp helps you manage your contacts without ever taking your hands off your keyboard.
This app is tailored for community and club leaders responsible for:
Basic Digital Literacy:
Technical Requirements:
Let's walk you through the setup process of LinkUp.
LinkUp.jar file:

LinkUp.jar file.Move It:
Place the LinkUp.jar file in your preferred folder in your computer.
Launch It:
Open the command terminal of your computer
Navigate into the folder you put the LinkUp.jar file in.
cd) function. For example, if LinkUp.jar is in the Downloads folder of your computer,
type cd Downloads in the command terminal to navigate into the Downloads folder.Type java -jar LinkUp.jar command to run the application.
In a few seconds, the LinkUp interface will appear. Scroll down for Interface Walkthrough.
Moving from the top of the interface to the bottom:
Notes about the command format:
Words in uppercase are information you need to provide.
e.g. For add n/NAME, replace NAME with an actual name.
add n/John Doe or add n/Michael Jordan etc.Items in square brackets are optional.
e.g. In n/NAME [sk/SKILL], sk/SKILL is optional.
n/John Doe sk/Java or n/John Doe.Items with … after them can be used multiple times.
e.g. r/ROLE… means you can add as many roles as you want.
r/Organiser, or r/Organiser r/Participant etc.All fields, apart from event and role, can be in any order.
e.g. If a command specifies n/NAME p/PHONE, p/PHONE n/NAME is also acceptable.
Extra parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
e.g. If you type in help 123, it will be treated as just help.
Commands are case-insensitive.
e.g. You can type edit 1 ev/Orientation r/Organiser, or EDIT 1 ev/Orientation r/Organiser.
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.
View a brief message on commands you can use and a pop-up message explaining how to access the help page.
Format:
help or h
Exit the application.
Format:
exit or ex
The User Interface will close after the input. LinkUp saves your contact list automatically in your computer, and your contact list will be restored whenever you reopen LinkUp.
This a table of all the information stored about each contact.
| Prefix | Field | Description | Requirements |
|---|---|---|---|
| n | Name | Name of the contact (e.g. John Tan) |
Can only contain letters, numbers, spaces and these special characters:
- ' . , / @ |
| p | Phone | Phone number of the contact (e.g. 92343124 or +65 91112344) | Can include digits, pluses, dashes, commas, round brackets and must contain between 3 and 18 digits. |
| e | Email address of the contact (e.g. john@gmail.com) |
Should be of the format local-part@domain, can be up to 254 characters and must adhere to the following constraints:
1. The local-part should only contain letters, numbers and these special characters: ! _ # $ % & ’ * + / = ? ` { | } ~ ^ . -
The local-part can take in up to 64 characters.
2. This is followed by a '@' and then a domain name. The domain name is made up of domain labels separated by periods. The domain name must:
| |
| t | Telegram | Telegram handle of the contact (e.g. @john123) | Must not be empty and can only be made up of: English letters (a-z, A-Z), digits (0-9), and underscores (_). The '@' at the front is optional. |
| ev | Event | Event(s) the contact is participating in (e.g. Orientation Camp) |
Must be between 2 - 60 characters. Can store any number of events but each event must have an accompanying role! |
| r | Role | Role of the contact at each event (e.g. Planning Committee) |
Must be between 2 - 30 characters. Can store any number of roles but each role must have an accompanying event! |
| sk | Skill | Skill(s) of the contact. (e.g. Pro Gamer) |
Skills can only contain letters, numbers, spaces and these special characters:
- + # "
Skills must contain at least one letter and be between 2 and 30 characters long.
Can store any number of skills! |
Add a person to the address book.
Format:
add n/NAME p/PHONE e/EMAIL t/TELEGRAM ev/EVENT… r/ROLE… [sk/SKILL]… or
a n/NAME p/PHONE e/EMAIL t/TELEGRAM ev/EVENT… r/ROLE… [sk/SKILL]…
Parameters:
n/NAME: Name of the person.
p/PHONE: Phone number of the person.
e/EMAIL: Email address of the person.
t/TELEGRAM: Telegram handle of the person.
ev/EVENT: Event of the person.
r/ROLE: Role of the person.
sk/SKILL: Skill of the person.
ev/EVENT must match its corresponding r/ROLE
by order of appearance, even if they are not directly beside each other. ev/Orientation ev/EWP r/Participant r/Organiser means ev/Orientation pairs with r/Participant,
and ev/EWP pairs with r/Organiser.Example Input:
add n/John Deez p/98765431 ev/Supernova r/Organiser e/johnde@example.com t/john123
Edit the details of an existing person in the address book.
Format:
edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TELEGRAM] [ev/EVENT]… [r/ROLE]… [sk/SKILL]… or
e INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TELEGRAM] [ev/EVENT]… [r/ROLE]… [sk/SKILL]…
INDEX, which refers to the index number shown in the contact list.sk/ without specifying any skills after it.ev/EVENT must match its corresponding r/ROLE
by order of appearance, even if they are not directly beside each other. ev/Orientation ev/EWP r/Participant r/Organiser means ev/Orientation pairs with r/Participant,
and ev/EWP pairs with r/Organiser.Parameters:
INDEX: Index number of person in contact list.
n/NAME: Name of the person.
p/PHONE: Phone number of the person.
e/EMAIL: Email address of the person.
t/TELEGRAM: Telegram handle of the person.
ev/EVENT: Event of the person.
r/ROLE: Role of the person.
sk/SKILL: Skill of the person.
Example Input:
edit 1 p/91234567 e/doejohn@example.com
Expected Output:
Edited Person: John Deez; Phone: 91234567; Telegram: @john123; Email: doejohn@example.com; Events: [Supernova]; Roles: [Organiser]; Skills:
| Initial Contact | Final Contact |
|---|---|
![]() | ![]() |
Example Input:
e 2 n/Rebecca Tan sk/
Expected Output:
Edited Person: Rebecca Tan; Phone: 99272758; Telegram: @FishyBernice; Email: berniceyu@example.com; Events: [Charity Gala]; Roles: [Finance Secretary]; Skills:
| Initial Contact | Final Contact |
|---|---|
![]() | ![]() |
Delete specified persons from the address book.
Format:
delete INDEX… or d INDEX…
INDEX.INDEX must be provided.Parameters:
INDEX: Index number of person in contact list.
Example Input:
delete 1 2
This input deletes both the 1st and 2nd person listed in the contact list.
Expected Output:
Deleted Person:
John Deez; Phone: 91234567; Telegram: @john123; Email: johndoe@example.com; Role: Organiser; Event: Supernova; Skills:,
Betsy Crower; Phone: 1234567; Telegram: @crownie; Email: betsycrowe@example.com; Role: Organiser; Event: Supernova; Skills:
Example Input:
d 1
This input deletes the 1st person listed in the contact list.
Expected Output:
Deleted Person:
Betsy Crower; Phone: 1234567; Telegram: @crownie; Email: betsycrowe@example.com; Role: Organiser; Event: Supernova; Skills:
Format:
copy INDEX or c INDEX
INDEX to the clipboard so that you can paste (ctrl/cmd + v) into the command box.Parameters:
INDEX: Index number of person in contact list.
Example Input:
copy 1
This input copies the 1st person listed in the contact list.
Expected Output:
Copied add command for John Deez to clipboard!
If paste (ctrl/cmd + v) does not work, here is the add command string for you to manually copy:
add n/John Deez p/98765431 e/johnde@example.com t/john123 ev/Supernova r/Organiser
Clear address book by deleting all persons from it.
Format:
clear
Expected Output:
Address book has been cleared!
These commands help you search through your contacts quickly and easily!
All commands will add an additional layer of filtering
(e.g. using the find command after lfav will only search through your favourites) except for list which
resets all your previous searches.
View a list of all persons in the address book.
Format:
list or l
Find persons whose names contain any of the given keywords.
Format:
find KEYWORD [MORE_KEYWORDS] or f KEYWORD [MORE_KEYWORDS]
hans will match Hans.Hans Bo will match Bo Hans.Han will not match Hans.
Hans Gruber will return Hans Gruber and not Hans Tan.Example Input:
find alex yeo
Expected Output:
If there are Alex Yeo and Alexa Yeoh in your contacts, only Alex Yeo will be listed.
Filter contacts from the address book based on name, event, role, phone number, telegram handle, email and skills.
Format:
filter [n/KEYWORD] [t/KEYWORD] [ev/KEYWORD] [r/KEYWORD] [sk/KEYWORD] or
fil [n/KEYWORD] [t/KEYWORD] [ev/KEYWORD] [r/KEYWORD] [sk/KEYWORD]
KEYWORD.KEYWORD from each field.n/Alice Bob will match all people have Alice or Bob in their name.filter ev/Supernova is the same as filter ev/supernova.filter n/Ali will filter out a person named Alice as well!Example Input:
Using the sample AddressBook below:
Typing the command filter ev/charity gala will show:
All of your contacts with Charity Gala in their event will be listed out.
Another example command filter n/Bernice ev/Charity will show:
This time, only contacts with both Bernice in their name and Charity in their event will be listed.
Format:
addskill INDEX sk/SKILL… or as INDEX sk/SKILL…
INDEX.INDEX must be provided.Parameters:
INDEX: Index number of person in contact list.
sk/SKILL: Skill of your contact.
Example Input:
addskill 1 sk/JavaScript sk/Cycling
addskill command is cumulative, unlike the edit command.
Expected Output:
Added skill [Cycling], [JavaScript] to John Deez
| Initial Contact | Final Contact |
|---|---|
![]() | ![]() |
Format:
dskill INDEX sk/SKILL… or ds INDEX sk/SKILL…
INDEX.INDEX must be provided.Parameters:
INDEX: Index number of person in contact list.
sk/SKILL: Skill of your contact.
Example Input:
dskill 1 sk/Cycling
Expected Output:
Deleted skills [Cycling] from John Deez
| Initial Contact | Final Contact |
|---|---|
![]() | ![]() |
Add a person from the address book to favourites and mark them with a heart icon.
Format:
favourite INDEX or fav INDEX
INDEX to favourites.Parameters:
INDEX: Index number of person in contact list.
Example Input:
favourite 1
This input adds the 1st person listed in the contact list to favourites.
Expected Output:
Marked John Deez as favourite.
| Initial Contact | Final Contact |
|---|---|
![]() | ![]() |
Remove a specified person from the address book from favourites and removes the heart icon.
Format:
unfavourite INDEX or unfav INDEX
INDEX from favourites.Parameters:
INDEX: Index number of person in contact list.
Example Input:
unfavourite 1
This input removes the 1st person listed in the contact list from favourites.
Expected Output
Unmarked John Deez from favourites.
| Initial Contact | Final Contact |
|---|---|
![]() | ![]() |
View a list of all your favourite persons in the address book.
Format:
lfav
Sample Output:
LinkUp data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
LinkUp 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.
| Action | Command |
|---|---|
| Help: View a brief message on commands you can use | help or h |
| Exit: Exit LinkUp | exit or ex |
| Add: Add a contact | add n/NAME p/PHONE e/EMAIL t/TELEGRAM ev/EVENT… r/ROLE… [sk/SKILL]… or a n/NAME p/PHONE e/EMAIL t/TELEGRAM ev/EVENT… r/ROLE… [sk/SKILL]… e.g. add n/John Deez p/98765431 e/johnde@example.com t/john123 ev/Supernova r/Organiser or a n/John Deez p/98765431 e/johnde@example.com t/john123 ev/Supernova r/Organiser |
| Edit: Edit a contact | edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TELEGRAM] [ev/EVENT]… [r/ROLE]… [sk/SKILL]… or e INDEX [n/NAME] [p/PHONE] [e/EMAIL] [t/TELEGRAM] [ev/EVENT]… [r/ROLE]… [sk/SKILL]… e.g. edit 2 n/James Lee e/jameslee@example.com or e 2 n/James Lee e/jameslee@example.com |
| Delete: Delete contacts | delete INDEX… or d INDEX… e.g. delete 3 or delete 1 3 5 |
| Copy: Copy an existing contact to make it easier to add a person with similar parameters | copy INDEX or c INDEX e.g. copy 2 or c 2 |
| Clear: Delete all contacts | clear |
| List: List all contacts | list or l |
| Find: Search for a contact by name | find KEYWORD [MORE_KEYWORDS] or f KEYWORD [MORE_KEYWORDS] e.g. find James Tan or f James Tan |
| Filter: Filter contacts by any fields | filter [n/KEYWORD] [t/KEYWORD] [ev/KEYWORD] [r/KEYWORD] [sk/KEYWORD] or fil [n/KEYWORD] [t/KEYWORD] [ev/KEYWORD] [r/KEYWORD] [sk/KEYWORD] e.g. filter ev/Hunt or fil ev/Hunt |
| Add Skill: Add skill(s) to contact | addskill INDEX sk/SKILL… or as INDEX sk/SKILL… e.g. addSkill 1 sk/JavaScript or as 1 sk/JavaScript |
| Delete Skill: Delete skill(s) from contact | dskill INDEX sk/SKILL… or ds INDEX sk/SKILL… e.g. dskill 2 sk/Cycling or ds 2 sk/Cycling |
| Favourite: Add a contact to favourites | favourite INDEX or fav INDEX e.g. favourite 3 or fav 3 |
| Unfavourite: Remove a contact from favourites | unfavourite INDEX or unfav INDEX e.g. unfavourite 3 or unfav 3 |
| List favourites: List all favourite contacts | lfav |
Why am I unable to run the LinkUp.jar file?
Ensure you have Java 17 or above installed in your computer. After installing LinkUp, type java -jar LinkUp.jar in your command terminal to launch LinkUp.
Refer to Quick Start for the detailed LinkUp launching process.
How do I save my data in LinkUp?
LinkUp data is saved in your computer automatically after any command that changes the data. There is no need to save manually. This means that your contact list will be restored whenever you reopen LinkUp.
Where is the LinkUp's contact data in my computer?
The contact data is stored in [LinkUp.jar file location]/data/addressbook.json. So if you have downloaded the LinkUp.jar file
into your Downloads folder of your computer, the contact data will be stored in Downloads/data/addressbook.json.
How do I factory reset LinkUp and get the original sample contact list?
Exit LinkUp, and then delete the addressbook.json file in [LinkUp.jar file location]/data/. Relaunch the app and the contact list should be back to the original sample contact list.
How do I edit only 1 of my 2 skills for a specific contact?
You would have to edit both skills in order for you to see the changes. So assuming
you have skills: Boxing, Drumming but you wish to change Drumming to Singing, you can only do this by using the edit command
and typing edit [INDEX] sk/Boxing sk/Drumming or e [INDEX] sk/Boxing sk/Drumming.
How do I add multiple roles and events to an existing contact?
You can use the edit command. So assuming your contact is a participant for an EWP event, and an invigilator for an exam event,
you can type edit [INDEX] ev/EWP r/Participant ev/Exam r/Invigilator. Each ev/EVENT must match its corresponding r/ROLE
by order of appearance, even if they are not directly beside each other.
How do I edit only 1 of my 2 event-role pairs for a specific contact?
You would have to edit both event-role pairs in order for you to see the changes. So assuming
you have Events: [AngBao Hunt, Exam]; Roles: [Organiser, Invigilator] but you wish to change Ang Bao Hunt to EWP, you can only do this by using the edit command
and typing edit [INDEX] ev/EWP r/Organiser ev/Exam r/Invigilator or e [INDEX] ev/EWP r/Organiser ev/Exam r/Invigilator.
Can I edit event information of a contact only?
No. You would have to edit the role of the contact too. Each event should have a corresponding role. So assuming you have
Events: [AngBao Hunt]; Roles: [Organiser] but you wish to change AngBao Hunt to Exam, you can only do this by using the edit command
and typing edit [INDEX] ev/Exam r/Organiser or e [INDEX] ev/Exam r/Organiser.
What if I type 2 events and 1 role when adding/editing a contact?
There will be an error. Each event should have exactly one corresponding role.
Can I add a new contact with the same phone number?
Adding a contact with an existing phone number / email address / name / telegram handle is not allowed.
Can I add Chinese/Tamil names to LinkUp?
Unfortunately, this current version of LinkUp can only save names with the specified English letters as shown in the Contact Management. As such, names like "小明" are not allowed.
preferences.json file created by the application before running the application again.help command (or use the Help menu, or the keyboard shortcut F1) again, the original Help Window will remain minimized, and no new Help Window will appear. We’d love to hear from you! Whether you have questions, feedback, or suggestions for new features, feel free to reach out to us.
Who We Are:
We are the AY2526S1-CS2103T-F13-2 team of developers passionate about creating efficient and user-friendly tools.
Contact Information:
📧 Email: e1408873@u.nus.edu
💬 GitHub Issue Page: LinkUp Issues
Feature Suggestions:
Have an idea to make LinkUp even better? Post it in our GitHub Issues page or email us — we’re always looking to improve!