User Guide
 Preface:
 Preface:
- This guide is on the usage of Team Builder.
- For a guide on developing Team Builder with us, see our developer guide.
- We are still working on making our user guide as user friendly as possible. You can help us by providing feedback here
Team Builder (TB) is a desktop app primarily for cross-faculty students to manage their contacts and build a multidisciplinary team based on soft skills and technical skills.
It is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, TB can help you build your team through your contacts much faster than traditional GUI apps.
About this guide

Welcome to Team Builder, we hope that this product will allow you to manage your contacts to build fantastic teams for your events/competitions.
This guide is designed for users with and without technical experience and is to be followed narratively from top to bottom. However, if you are an experienced user, feel free to skip the Example context. If you are looking for a specific command, you can view the table of commands here.
 What do the symbols and formatting mean?:
 What do the symbols and formatting mean?:
- 
       - are important specific information to note - are important specific information to note
- 
       - are usage tips/shortcuts - are usage tips/shortcuts
- 
       - are some warnings about certain actions - are some warnings about certain actions
- 
      links - these blue words are links and can be clicked on 
This guide is split into 6 sections:
Sections 3,4,5 contain descriptions and instructions for the main features of Team Builder.
Below is the full table of contents, in case you are looking for something very specific.
 Full Table of Content:
 Full Table of Content:
Full Table of Commands
 Notes about the command format:
 Notes about the command format:
- 
      command- are the command words. They are case-sensitive!
- 
      UPPER_CASE- are the input data fields to be supplied by the user.
 e.g. inadd n/NAME,NAMEis an input data field which can be used asadd n/John Doe.
- 
      []- are optional input data fields.
 e.g.[e/EMAIL]can be used likee/lmao@lmao.com
- 
      []...- are input data fields that can be supplied any number of times including zero times.
 e.g.[t/TAG]...can be used liket/React,t/React t/AWSetc.
| Command | Type | Format, Examples | 
|---|---|---|
| add | Modifying | add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [m/MAJOR] [t/TAG]... [T/TEAM_NAME]... | 
| clear | Modifying | clear | 
| delete | Modifying | delete INDEXe.g., delete 3 | 
| edit | Modifying | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]... [T/TEAM_NAME]...  | 
| find | Listing | find NAME/MAJOR/TAG [MORE_KEYWORDS]e.g., find James Jake | 
| sort | Listing | sort ORDER SORT_BYe.g., sort desc tcount | 
| create | Modifying | create tn/TEAM_NAME td/TEAM_DESC [t/TAG]e.g., create tn/TeamA td/2103T_tP t/Java | 
| show | Listing | show TEAM_NAME [OTHER_TEAM_NAME]... | 
| list | Listing | list | 
| remove | Modifying | remove TEAM_NAME | 
| undo | Special Modifying | undo | 
| redo | Modifying | redo | 
| help | Window | help | 
 Tips on command behaviour:
 Tips on command behaviour:
- 
      You can place input data fields in any order. 
 e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_NUMBER n/NAMEis also acceptable.
- 
      If a input data is expected only once in the command but you specified it multiple times, only the last occurrence of the input data will be taken. 
 e.g. if you specifyp/12341234 p/56785678, onlyp/56785678will be taken.
- 
      If you enter extraneous input fields for commands with no input data fields (such as help,list,exitandclear), the command will execute as per normal while ignoring the fields.
 e.g. if the command specifieshelp 123, it will be interpreted ashelp.
Quick start
Prerequisite:
- Downloaded Java JDK 11 for your operating system.
Team Builder Installation:
- 
    Open a command terminal 
- 
    Ensure you have Java 11 or above installed in your Computer by typing java --versionin the command terminal. Information on the Java version installed should appear in the command terminal. Otherwise, click here to troubleshoot.
- 
    Download the latest teambuilder.jar from here. 
- 
    Copy the file to the folder you want to use as the home folder for your Team Builder. 
- 
    In the command terminal, cdinto the folder you put the jar file in, and use thejava -jar teambuilder.jarcommand to run the application.
 A window (seen below without the labels) should appear in a few seconds. Note how the app contains some sample data.
  
 As you can see there are two main panels. The left panels shows your contacts, and the right panel shows the teams that you have in Team Builder.- The blue tags are the skill tags of a person, to denote the skills or specialisation of the person.
- The red tags are the team tags, which tell you which team a person is in
- The yellow-orange tags are the members of a team, which tells you the names of the team members in a team
- The green tags are the skill tags of a team, which are the skills that you think this team needs.
 You will find more details below the tags of the respective person/team, such as the team description or the contact’s phone number. 
- 
    Type the command in the command box and press Enter to execute it. e.g. typing helpand pressing Enter 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 a/John street, block 123, #01-01 m/computer science: Adds a contact namedJohn Doeto the Team Builder.
- 
        delete 3: Deletes the 3rd contact shown in the current list.
- 
        clear: Deletes all contacts.
- 
        exit: Exits the app.
 
- 
        
- 
    Refer to the Full Table of Commands above for details of each command. 
Managing Contacts
Team Builder allows you to easily manage contacts of individuals that you would want to be teammates with.
Your contacts can be managed in these ways:
- Adding new potential teammates as a contact.
- Updating any existing contact’s information and tags.
- Deleting contacts that you no longer want to be teammates with or have lost contact.
Adding a new contact : add
Format: add n/NAME [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [m/MAJOR] [t/TAG]... [T/TEAM_NAME]...
Example context:

You have exchanged contacts with a person named John at a Computer Science Event. He seems like a nice guy that you might want to do projects with. You note that he is a business major with great presentations skills.
Let’s add his contacts to Team Builder as a new potential teammate for future events and projects!
What to type:
add n/John p/98765432 m/Business t/Good Presentor
Result:

 Note:
The order of persons added in the list may not be in chronological order.
 Note:
The order of persons added in the list may not be in chronological order.
 Caution:
You can only add a team tag to a person if the team has been created beforehand!
 Caution:
You can only add a team tag to a person if the team has been created beforehand!
 Tip:
A contact can have any number of tags (including 0). Tags are especially useful for keeping track of skills and traits!
A contact must have a name, other features are optional.
 Tip:
A contact can have any number of tags (including 0). Tags are especially useful for keeping track of skills and traits!
A contact must have a name, other features are optional.
Updating a contact : edit
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [m/MAJOR] [t/TAG]… [T/TEAM_NAME]
Example context:

It seems that we forgot to add some information about John.
We missed out the back of his card that has his email.
Let’s use the edit command to update his information.

We see John is index 1 in our display.
What to type:
edit 1 e/john@example.com
Result:

John's email is now reflected on our contact list.
 Notes about the edit command:
 Notes about the edit command:
- Edits the person at the specified INDEX. The index refers to the index number shown in the displayed person 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 and teams, the existing tags and teams of the person will be removed i.e adding of tags and teams is not cumulative.
- You can remove all the person’s tags or teams by respectively typing t/orT/without specifying any after it.
Deleting a contact : delete
Format: delete INDEX
Example context:
You hear from your friends that John is actually a snake*  and we do not want a snake as a teammate.
 and we do not want a snake as a teammate.
Let’s delete him from our Team Builder.
Again, we see John is index 1 in our display.
What to type:
delete 1 
Result:

John is no longer in your Team Builder contact list!
* snake refers to a backstabber.
Making a Team
Team Builder helps you to make a team easily and keep in mind any skills that are required.
Our current team management features include:
- Creating a team
- Finding the right teammate using find,listandsort
- Adding a person to a team
- Listing all teammates in a team
- Removing a person from a team
- Removing a team entirely
Creating a team: create
Format: create tn/TEAM_NAME td/TEAM_DESC [t/TAG]...
Example context:
You have decided to participate in NUS Hack&Roll hackathon. Let’s create a team called “NUSMeets”! Since your idea involves creating a web application, you will need someone with technical experience in React and AWS. You would also prefer to have a UI person to make your web app presentable. As this hackathon involves a tight timeline, proper project management skills are required too.
What to type:
create tn/NUSMeets td/A multidisciplinary team for upcoming HacknRoll in mid Jan. t/JavaScript t/React t/AWS t/Project Management t/UI Design
Result:

Finding the right teammate I : find
 Format: find NAME/MAJOR/TAG [MORE_KEYWORDS]... 
Example context 1:
You recall that two of your tutorial classmate named Alex and David are good at UI Design and you want to invite them to your team, but you have forgotten their full name and contact numbers.
What to type:
find alex david
Result:

Example context 2:
You still feel your team needs more people, and you decide to find someone who majored in computer science.
What to type:
find computer science
Result:

Example context 3:
Now your team is almost formed, but you still need a person who mastered JavaScript.
What to type:
find javascript
Result:

 Specificity of
 Specificity of find:
- The search is case-insensitive. e.g hanswill matchHans
- The order of the keywords does not matter. e.g. Hans Bowill matchBo Hans
- Only the name is searched.
- Only full words will be matched e.g. Hanwill not matchHans
- Persons matching at least one keyword will be returned (i.e. ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Finding the right teammate II : list
Format: list
Example context:
You feel that you have narrowed down to too little people. Let’s display our whole contact list again.
What to type:
list
If you have accidentally added extra input fields after list, the command would be accepted as anything after list is discarded.
Finding the right teammate III : sort
Example context:
Perhaps you are not too sure which skills are required in your team, so you want to list persons who know a wide range of skills first.
What to type:
sort desc tcount
Result:

 Specificity of
 Specificity of sort:
- The ORDER and SORT_BY are case-insensitive. e.g tcountwill matchtCount
- The ORDER can only be either ascending (asc) or descending (desc)
- The following SORT_BY are available:
- 
tcountSorts by person’s tag count (this applies to the blue skill tags only, not including team tags)
 Note:
Sort would be performed on the current list of persons displayed on the UI. If you are looking to sort all persons after
performing a
 Note:
Sort would be performed on the current list of persons displayed on the UI. If you are looking to sort all persons after
performing a find command etc., remember to use list command before using sort.
Add a person to a team : edit
Format: edit INDEX [T/TEAM_NAME]...
Example context:
You recall participating in a Hackathon previously with Alex Yeoh and knows he is familiar with React. You decide to reach out to him to form your team for Hack&Roll.
What to type:
edit 1 T/NUSMeets
Result:

 Note:
 Note:
edit command is used here as adding a person to a team is equivalent to editing the team tags of a person.
 Caution:
 Caution:
- 
      You can only add a person to the team if the team has been created beforehand! 
- 
      If you are adding a team to a person with existing teams, you need to type out their other team names as well. e.g. edit 1 T/Old Team T/New Team
Listing all teammates in a team : show
Format: show TEAM_NAME [OTHER_TEAM_NAME]...
Example context:
The Hack&Roll announced that there is a limit on team size. You want to list all people who are currently added to your NUSMeets team.
What to type:
show NUSMeets
Result:

Removing a teammate from a team : edit
Format: edit INDEX [T/TEAM_NAME]
Example context:
Alex reached out to you later that he is now unable to attend Hack&Roll due to some personal circumstances. We have no choice but to remove Alex from our team.
What to type:
edit 1 T/
Result:

We see that Alex's team tag is removed and the team no longer has Alex as a member
 Note:
 Note:
edit command is used here as removing a person to a team is equivalent to editing the team tags of a person.
 Caution:
If you are removing just one team from a person with multiple teams, you need to type out their other team names to keep them on their other teams.
 Caution:
If you are removing just one team from a person with multiple teams, you need to type out their other team names to keep them on their other teams. (e.g. John is in Team1 and Team2 but he will be removed from Team2,
edit 1 T/Team1)
Removing a team : remove
Format: remove TEAM_NAME
Example context:
Oh no, you realised that you have a number of deadlines during the period of time Hack&Roll would run. Taking into account Alex’s absence as well, You decide to not participate in it anymore.
What to type:
remove NUSMeets
Result:
NUSMeets will be removed from the team list panel.
 Note:
The
 Note:
The remove command will also remove the team tags for people who were in the team.
Extra Team Builder Features
Team Builder has some quality of life features that may help you in many different ways.
This includes:
- Clearing all entries
- Undoing a command
- Redoing an undo command
- Exiting the program
- Saving data
- Editing the data file
Clearing all entries : clear
Format: clear
Clears all entries from the Team Builder, instead of manually removing teams and persons.
What to type:
clear
Undoing a command : undo
Format: undo
Example context:
Oops! It looks like we accidentally used the clear command to remove all our contacts.
Let’s use the undo command to revert our Team Builder back to before we typed the clear command.
What to type:
undo
 Caution:
 Caution:
- 
      You can only undoup to 10 times in a row! After the 10thundo, no moreundois possible.
- 
      You can only undomodifying commands.
- 
      You may also undo into a state where findwas called and so your contact list is not shown fully. Simply uselistto view the full contact list again.
Redoing an undo command : redo
Format: redo
Example context:
Perhaps we want to clear the example contacts after all.
Let’s use the redo command to revert our Team Builder back to before we typed the undo command.
What you can type:
redo, redo 123, redo ada adw v zklw, etc.
These are all acceptable as anything after redo is discarded.
 Caution:
Typing any modifying command (other than an undo) after an
 Caution:
Typing any modifying command (other than an undo) after an undo makes it impossible to redo that undo command!
Exiting the program : exit
Format: exit
Exits the program.
Saving the data
Team Builder data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Editing the data file
Team Builder data are saved 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 your changes to the data file makes its format invalid, Team Builder will discard all data and start with an empty data file at the next run.
 Caution:
If your changes to the data file makes its format invalid, Team Builder will discard all data and start with an empty data file at the next run.
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 Team Builder home folder.
Q: Why is my command text in red and not working?
A: You might have input an invalid command. Either the command word doesn’t exist or the parameters entered are invalid.
Future features
These are features that will improve your experience using Team Builder, to be added in the future. Look forward to them!
Support for long tags
Currently, whether it is a skill tag or a team tag, Team Builder will try to display the whole tag regardless of how long it is, causing it to overflow out of the window and be un-readable. Future changes:
- Tags that exceed a character count of 20 characters will be truncated and have a “…” after it.
- Users will be able to view the full tag by hovering their cursor over the tag.
- This will not change the behaviour of the add,edit, orfindcommands.
Phone number limit
Currently, there is no limit to the length of a contacts phone number. Future changes:
- Phone number will have a maximum length of 15 digits, as that is the longest viable phone number.
