User Guide

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.


About LinkUp

Target Users

This app is tailored for community and club leaders responsible for:

  • Tracking members' events and roles
  • Recording members' skills to efficiently allocate work
  • Communicating with members via messaging platforms (e.g. Telegram)

What do you need?

Basic Digital Literacy:

  • You should know how to download software and type commands
  • You should have experience with keyboard-driven workflows to tackle tasks efficiently

Technical Requirements:

  • A Mac, Windows, or Linux computer
  • 50MB of available storage space

Where do you start?

  • New users: Start from Quick Start to set up LinkUp on your computer
  • Existing users: Go to Features for command details
  • Advanced users: Refer to the Command Summary for quick command guide

Quick Start

Let's walk you through the setup process of LinkUp.

  1. Prerequisites:
    You are required to install a specific version of the Java Development Kit (JDK) to run LinkUp. A JDK is a software package that provides the tools needed to develop and run Java applications.
    • Mac users: Follow the JDK installation guide here.
    • Windows users: Follow the JDK installation guide here.
    • Linux users: Follow the JDK installation guide here.
Don't know your OS? Click here to check.
  1. Download LinkUp:
    To install the latest LinkUp.jar file:
    1. Go to the LinkUp Releases Page.
    2. Scroll down the latest release section until you see a section an Assets header, which looks like this:
    3. Click on the file that ends with ".jar" to automatically download the latest LinkUp.jar file.

  1. Move It:
    Place the LinkUp.jar file in your preferred folder in your computer.

  2. Launch It:

    1. Open the command terminal of your computer

      • Mac users: Open Terminal via Spotlight (⌘ + Space → type Terminal → press return ).
      • Windows users: Open Command Prompt by: Press Win + R → type cmd → press Enter
      • Linux users: Open Terminal via Ctrl + Alt + T or search for it in your application menu.

    2. Navigate into the folder you put the LinkUp.jar file in.

      • You can do this by using the change directory (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.

    3. Type java -jar LinkUp.jar command to run the application.

    4. In a few seconds, the LinkUp interface will appear. Scroll down for Interface Walkthrough.


Interface Walkthrough


Moving from the top of the interface to the bottom:

  1. Menu Bar: Contains two buttons for File and Help for you to click on and utilise if necessary.
  2. Command Box: You will input commands here to make changes to the contact list.
  3. Result Box: After you input a command, the result box will notify you on whether it is successful or not.
  4. Contact List: Here is where all your contacts will be displayed, with a scroll bar for you to use if you want to look through your contact list.

Features

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.

    • You can type in 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.

    • You can type 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.

    • You can type 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.

Help & Exit

1. View Help

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

Expected Output:
Example Output for Help Command

2. Close LinkUp

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.


Contact Management

Contact Information

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 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:
  • end with a domain label at least 2 characters long
  • have each domain label start and end with alphanumeric characters
  • have each domain label consist of alphanumeric characters, separated only by hyphens, if any.
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!

3. Add a Contact

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.

  • Each event must have only one corresponding role. You are adding event-role pairs, not independent events or roles. As such, you cannot add 1 event and 2 roles. The number of events and roles you add must match.
  • You can add one or more event-role pairs, but note that each ev/EVENT must match its corresponding r/ROLE by order of appearance, even if they are not directly beside each other.
    For example: ev/Orientation ev/EWP r/Participant r/Organiser means ev/Orientation pairs with r/Participant, and ev/EWP pairs with r/Organiser.
  • Duplicate contacts with the same name, phone number, email, and telegram handle are not allowed.
  • Phone numbers are considered duplicates only if the digits and + symbol match.
    For example: +66 676767 is not considered a duplicate of 6667 6767.
Tip: A person can have any non-negative number of skills including 0. The order of fields, apart from event and role, does not matter.

Example Input:

add n/John Deez p/98765431 ev/Supernova r/Organiser e/johnde@example.com t/john123

Expected Output:
Example Output for Add Command


4. Edit a Contact

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]…​

  • Edit the details of the person at the specified INDEX, which refers to the index number shown in the contact list.
  • At least one of the optional fields must be provided.
  • When you perform the action of editing the skills, the existing skills of the person will all be removed and replaced with your skills input i.e adding of skills is not cumulative.
  • You can remove a person’s skills by typing sk/ without specifying any skills after it.
  • Each event must have only one corresponding role. You cannot edit an event or role only. The number of events and roles you edit must match.
  • When editing an event and its corresponding role, the existing events and roles will all be removed and replaced with your new event and role input i.e adding of events and roles is not cumulative.
  • You can add one or more event-role pairs, but note that each ev/EVENT must match its corresponding r/ROLE by order of appearance, even if they are not directly beside each other.
    For example: ev/Orientation ev/EWP r/Participant r/Organiser means ev/Orientation pairs with r/Participant, and ev/EWP pairs with r/Organiser.
  • Duplicate contacts with the same name, phone number, email, and telegram handle are not allowed.
  • Phone numbers are considered duplicates only if the digits and + symbol match.
    For example: +66 676767 is not considered a duplicate of 6667 6767.

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

5. Delete Contacts

Delete specified persons from the address book.

Format:
delete INDEX… or d INDEX…

  • Delete the person at the specified INDEX.
  • At least one 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:

6. Copy Contact

Copy an existing contact to make it easier to add a person with similar parameters.

Format:
copy INDEX or c INDEX

  • Copies the Add Command input of the person at the specified 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

7. Delete ALL Contacts

Clear address book by deleting all persons from it.

Format:
clear

Expected Output:

Address book has been cleared!
Caution: This command deletes ALL your contacts permanently. You are recommended to double-check before using this command.

Contact Viewing & Searching

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.

8. List all Contacts

View a list of all persons in the address book.

Format:
list or l


9. Search for Contacts by Name

Find persons whose names contain any of the given keywords.

Format:
find KEYWORD [MORE_KEYWORDS] or f KEYWORD [MORE_KEYWORDS]

  • The search is case-insensitive. e.g. hans will match Hans.
  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans.
  • Only the name is searched.
  • Only full words will be matched. e.g. Han will not match Hans.
    • Persons matching all keywords will be returned. e.g. 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.


10. Filter Contacts by any Fields

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]

  • Filter the address book based on your specified KEYWORD.
  • Filter and produces all possible outputs matching at least one KEYWORD from each field.
  • At least one of the optional fields must be provided.
  • Can filter many words of a field by using space. e.g. n/Alice Bob will match all people have Alice or Bob in their name.
  • The keyword is case-insensitive.
    • e.g. filter ev/Supernova is the same as filter ev/supernova.
  • The keyword can be a part of the full word.
    • e.g. filter n/Ali will filter out a person named Alice as well!
  • The keyword can be any valid character for that field: e.g. 1, a, @ (for email), …​
  • If more than one field is provided, LinkUp will filter contacts that match all the fields provided.

Example Input:
Using the sample AddressBook below:

Example AddressBook for Filter Command

Typing the command filter ev/charity gala will show:

Example Output 1 for Filter Command

All of your contacts with Charity Gala in their event will be listed out.

Another example command filter n/Bernice ev/Charity will show:

Example Output 2 for Filter Command

This time, only contacts with both Bernice in their name and Charity in their event will be listed.


Skill Management

11. Add new Skill

Add skill to an existing person from the address book.

Format:
addskill INDEX sk/SKILL… or as INDEX sk/SKILL…

  • Adds one or more skills to the person at the specified INDEX.
  • Only one 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
Tip: Adding skills using the addskill command is cumulative, unlike the edit command.

Expected Output:

Added skill [Cycling], [JavaScript] to John Deez
Initial Contact Final Contact

12. Delete existing Skill

Delete skills of an existing person from the address book.

Format:
dskill INDEX sk/SKILL… or ds INDEX sk/SKILL…

  • Delete one or more skills of the person at the specified INDEX.
  • Only one 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

Favourite Contact Management

13. Add a Contact to Favourites

Add a person from the address book to favourites and mark them with a heart icon.

Format:
favourite INDEX or fav INDEX

  • Add the person at the specified 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

14. Remove a Contact from Favourites

Remove a specified person from the address book from favourites and removes the heart icon.

Format:
unfavourite INDEX or unfav INDEX

  • Remove the person at the specified 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

15. List all Favourite Contacts

View a list of all your favourite persons in the address book.

Format:
lfav

Sample Output:

Sample Output for list favourite command


Data Storage

16. Save the Data

LinkUp data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.


17. Edit the Data File

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.

Caution: If you edit the data file incorrectly and make its format invalid, LinkUp will not load any contacts at startup. Adding a new person in this state will cause LinkUp to overwrite the existing file with only the new contact. Therefore, it is recommended to always back up your data file before making manual changes.

Command Summary

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

Troubleshooting

Frequently Asked Questions

1. Launching LinkUp

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.

2. LinkUp Data

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.

3. Contact Detail Management

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.

Known Issues

  • Issue: When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, LinkUp's interface will open off-screen.
    Solution: Delete the preferences.json file created by the application before running the application again.
  • Issue: If you minimize the Help Window and then run the 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.
    Solution: Manually restore the minimized Help Window.

Further Help & Support

  • Visit our GitHub Repository or Developer Guide for technical details.
  • Post your query here by creating a new issue, detailing
    • Your exact command input
    • Errors faced
    • Your computer's operating system
    • Your JDK Version
    • Screenshots
      We will get back to you as soon as possible.

Get in Touch with Us

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!