User Guide
ThunderCat (TC) is a desktop app designed for Year 2 Computing Students. The application acts as an address book for contacts with added support for group projects. You can manage contacts, organise them into project groups and manage your tasks according to those groups.
ThunderCat also acts as a tool for Year 2 Computing Students to build up their confidence in using a Command Line Interface (CLI) to navigate applications and manipulating JSON files - a popular data file format widely used in Computing.
ThunderCat does not act as a messaging application. This application is optimized for you to use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, ThunderCat can get your project groups’ management tasks done faster than traditional GUI apps.
- About The Guide
- Quick start
- Graphical User Interface (GUI)
- Features
- Data Storage
- FAQ
- Glossary
About The Guide
Given that ThunderCat is designed for Year 2 Computing students, this user guide assumes that you have a basic level of technical knowledge of CLI and JSON, as well as terms like ‘parameters’, ‘boolean’ and ‘array’. This guide also serves its purpose to help you improve on and get used to CLI and JSON usages. This user guide also provides some elaboration on certain technical terms that you likely may not be familiar with especially since you are a student. The definitions for some of these terms can be found in the glossary.
Navigation
Use the table of contents to navigate this user guide easily. There will also be links in some sections linking to other relevant sections within this user guide or to other websites which provide useful information.
Formatting
There are blocks that have coloured backgrounds and have icons. The content of these highlight useful information:
Quick start
-
Ensure you have Java
11
or above installed in your Computer. -
Download the latest
ThunderCat.jar
from here. -
Copy the file to the folder you want to use as the home folder for the application.
-
Double-click the file to start the app. The GUI as shown by the example below should appear in a few seconds. Note how the app contains some sample data.
-
For Mac Users encountering this issue, follow this guide to launch the application.
-
Type the command in the command box and enter to execute it. e.g. typing
help
and entering will open the help window.
Some example commands you can try:-
list
: Lists all persons. -
add
n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01
: Adds a person namedJohn Doe
to the application’s records. -
delete
3
: Deletes the 3rd person shown in the displayed list. -
clear
: Deletes all data in ThunderCat. -
exit
: Exits the app.
-
-
Refer to the Features below for details of each command.
Graphical User Interface (GUI)
-
Home Page: The home page where the lists of persons and groups are displayed.
-
Group Information Page: The group information page where the lists of group members and tasks are displayed.
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 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 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. -
Extra parameters for commands that do not take in parameters (such as
help
,list
,exit
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
.
Command Overview
Action | Format | Examples | Home Page | Group Information Page |
---|---|---|---|---|
Add person | add n/NAME p/PHONE_NUMBER e/EMAIL [a/ADDRESS] [t/TAG]… |
add n/James Ho p/22224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/friend t/colleague |
||
Clear all | clear |
|||
Delete person | delete INDEX |
delete 3 |
||
Edit person | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/TAG]… |
edit 2 n/James Lee e/jameslee@example.com |
||
Find person | find KEYWORD [MORE_KEYWORDS] |
find James Jake |
||
List all persons | list |
|||
Create Group | addG n/GROUP_NAME [d/DESCRIPTION] |
addG n/CS2103 d/Project Group |
||
Show all Groups | groups |
|||
Show Group information | group GROUP_INDEX |
group 2 |
||
Edit Group | editG GROUP_INDEX [n/NAME] [d/DESCRIPTION] |
editG 2 n/CS2103T d/New project group for Y2S1 |
||
Find Group | findG KEYWORD [MORE_KEYWORDS] |
|||
Delete Group | deleteG GROUP_INDEX |
deleteG 2 |
||
Join Group | joinG p/PERSON_INDEX_1 p/PERSON_INDEX_2 … g/GROUP_INDEX |
joinG p/1 p/2 g/2 |
||
Remove person from Group | remove PERSON_INDEX |
remove 2 |
||
Add task to group | addT d/DESCRIPTION |
addT d/read book |
||
Mark task as done | done TASK_INDEX |
done 3 |
||
Delete task in group | deleteT TASK_INDEX |
deleteT 1 |
||
Undo a command | undo |
|||
Exit application | exit |
|||
Help | help |
Persons
Adding a person: add
Adds a person to ThunderCat.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL [a/ADDRESS] [t/TAG]…
Examples:
-
add n/John Doe p/98765432 e/johnd@example.com a/John street, Block 123, #01-01
Listing all persons : list
Shows a list of all persons in ThunderCat. Returns you to the Home Page.
findG
command! Use the groups
command for that.
Format: list
Editing a person : edit
Edits an existing person in ThunderCat.
Format: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [t/TAG]…
- 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, the existing tags of the person will be removed i.e adding of tags is not cumulative.
- You can remove all the person’s tags by typing
t/
without specifying any tags after it. - You can remove a person’s address by typing
a/
without specifying any address after it.
Examples:
-
edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to beBetsy Crower
and clears all existing tags. -
edit 7 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 7th person to be91234567
andjohndoe@example.com
respectively.
Locating persons by name: find
Finds persons whose names contain any of the given keywords in ThunderCat.
Format: find KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
hans
will matchHans
- The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
- Only the name is searched.
- Only full words will be matched e.g.
Han
will not matchHans
- Persons matching at least one keyword will be returned (i.e.
OR
search). e.g.Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find John
returnsjohn
andJohn Doe
-
find alex david
returnsAlex Yeoh
,David Li
Deleting a person : delete
Deletes the specified person from ThunderCat (also removes the person from all groups that includes this person).
Tip: You can only indicate one INDEX to delete while using this command.
Format: delete INDEX
- Deletes the person at the specified
INDEX
and removes it from all related groups automatically. - The index refers to the index number shown in the displayed person list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
list
followed bydelete 2
deletes the 2nd person in ThunderCat. -
find Betsy
followed bydelete 1
deletes the 1st person in the results of thefind
command.
Groups
Creating a group : addG
Creates a group in ThunderCat with an optional description. A description for the group is optional.
Format: addG n/GROUP_NAME [d/DESCRIPTION]
Examples:
-
addG n/Family
adds a group with the name “Family” with the default description. -
addG n/CS2103 d/Project group Y2S1
adds a group with the name “CS2103” with the description “Project group Y2S1”.
Viewing all groups: groups
Shows a list of all groups in ThunderCat. Returns you to the Home Page.
find
command! Use the list
command for that.
Format: groups
Editing a group: editG
Edits an existing group in ThunderCat.
Format: editG GROUP_INDEX [n/NAME] [d/DESCRIPTION]
- The group with the specified
GROUP_INDEX
will be edited. - The
GROUP_INDEX
refers to the index number shown in the last displayed group list. - The index must be a positive integer 1, 2, 3, …
- Description can be empty if group was created without one but once set, description should never be empty.
Example:
-
editG 3 n/ES2660 d/Communications Mod
edits the name, and the description of the 3rd group in the displayed group list to be “ES2660” and “Communication Mod” respectively.Before After
Locating groups by name: findG
Find groups whose names contain any of the given keywords in ThunderCat.
Format: findG KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
cs2103T
will matchCS2103T
- The order of the keywords does not matter. e.g.
Favourite Group
will matchGroup Favourite
- Only the group name is searched.
- Only full words will be matched e.g.
CS2103
will not matchCS2103T
- Groups matching at least one keyword will be returned (i.e.
OR
search). e.g.CS2103T
will returnCS2103T Friends
,CS2103T Tutors
Examples:
-
findG CS2103T
returnsCS2103T Mates
andCS2103T Tutors
-
findG CS2103T Mates
returnsCS2103T Project Mates
,Lectures CS2103T
Deleting a group : deleteG
Deletes the specified group from ThunderCat.
Tip: You can only indicate one INDEX to delete while using this command.
Format: deleteG GROUP_INDEX
- Deletes the group at the specified
GROUP_INDEX
. - The group index refers to the group number shown in the displayed group list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
deleteG 2
deletes the 2nd group in ThunderCat.
Adding multiple people to a group : joinG
Adds multiple specified people to a specified group in ThunderCat.
Format: joinG p/PERSON_INDEX_1 p/PERSON_INDEX_2 … g/GROUP_INDEX
- Adds to a group specified at
GROUP_INDEX
, multiple people specified atPERSON_INDEX_1 PERSON_INDEX_2 …
. - The group index refers to the group number shown in the displayed group list.
- The person index refers to the person index number show in the displayed person list.
- Group index must be a positive integer 1, 2, 3, …
- Person index must be a positive integer 1, 2, 3, …
Examples:
-
joinG p/1 p/2 p/3 g/2
adds persons indexed 1, 2, 3 in the displayed person list to group 2 in the displayed group list.Second group initially Type JoinG command in Home page Second group after
Listing all group mates and tasks in a group: group
Lists out all the group mates and tasks in the specified group in ThunderCat.
Format: group GROUP_INDEX
- The group mates and tasks in the group at the specified
GROUP_INDEX
are listed out. - The
GROUP_INDEX
refers to the index number shown in the displayed group list. - The index must be a positive integer 1, 2, 3, …
Example:
-
group 1
shows the information of the group at index 1 of the displayed group list.
Before After
Remove a person from the current group: remove
Removes the specified person from the group that ThunderCat is displaying.
delete
command.
Format: remove PERSON_INDEX
- The groupmate with the specified
PERSON_INDEX
will be removed from the group. - The
PERSON_INDEX
refers to the index number shown in the displayed person list. - The index must be a positive integer 1, 2, 3, …
Example:
-
remove 2
removes the 2nd person in the displayed person list from the group.
Tasks
Adding a task to the current group: addT
Adds a task to the group that ThunderCat is displaying. By default, the task is marked Not done
.
Format: addT d/TASK_DESCRIPTION
Example:
-
addT d/Prepare pitch
adds a task with the description “Prepare pitch” to the group and is markedNot done
by default.
Deleting a task from the current group: deleteT
Deletes the specified task from the group that ThunderCat is displaying.
Tip: You can only indicate one TASK_INDEX to delete while using this command.
Format: deleteT TASK_INDEX
- The task with the specified
TASK_INDEX
will be removed from the current group. - The
TASK_INDEX
refers to the index number shown in the displayed task list. - The index must be a positive integer 1, 2 ,3, …
Example:
-
deleteT 1
deletes the 1st task in the displayed task list.
Marking a task as done: done
Marks the specified task in the group as done.
Format: done TASK_INDEX
- The task with the specified
TASK_INDEX
will be marked as done. - The
TASK_INDEX
refers to the index number shown in the task list. - The index must be a positive integer 1, 2, 3, …
Example:
-
done 2
marks the 2nd task in the displayed task list as done.Before After
General:
Undoing an undoable command : undo
Undoes an undoable command.
Format: undo
- The following are the commands that can be undone:
Clearing all entries : clear
Clears all entries from ThunderCat.
Format: clear
Viewing help : help
Shows a message explaining how to access the command summary on this user guide.
Format: help
Exiting the program : exit
Exits ThunderCat.
Format: exit
Data Storage
Saving the data
The data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Loading the data
The data is loaded automatically from the hard disk when the application starts. There is no need to load the data manually.
If there is no data file to load, such as when the application has just been downloaded and has not been run yet or when the data file is deleted, then sample records are loaded instead.
clear
to easily and quickly remove the sample records if desired.
If the data file has an invalid format, such as after editing the file wrongly, then the application will discard all the data and start with an empty data file on the next run. This is irreversible.
Editing the data file
The data is saved as a JSON file called records.json
located in [JAR file location]/data
. Advanced users are welcome to update data directly by editing that data file.
Structure of the data file
The data file consists of a JSON object containing a persons
JSON array and a groups
JSON array:
{
"persons" : [
...
],
"groups" : [
...
]
}
The persons
JSON array consists of entries of each saved person and their details structured as a JSON object. The order the entries appear in the JSON array determines the order the entries will appear in ThunderCat.
In each person entry, these are the required attributes:
-
"name"
is a string that refers to the person’s saved name. -
"phone"
is a string that refers to the person’s saved phone number. -
"email"
is a string that refers to the person’s saved email. -
"address"
is a string that refers to the person’s saved address.
There are also some optional attributes:
-
"tagged"
is a JSON array that contains strings that each refer to a tag the person is assigned. -
"id"
is a string which is used by group entries to refer to the person with the ID as a group mate.- Each ID is made of two hexadecimal numbers separated by a hyphen
[hex]-[hex]
. - Each ID must be unique among all person entries.
- The value of the ID does not matter, so it can have any value, so long as each ID is unique among all person entries.
- If a person belongs to a group, then the person must have an ID and this ID must also appear in that group’s
groupMateIds
JSON array.
- Each ID is made of two hexadecimal numbers separated by a hyphen
{
"persons" : [ {
"name" : "Alex Yeoh",
"phone" : "87438807",
"email" : "alexyeoh@example.com",
"address" : "Blk 30 Geylang Street 29, #06-40",
"tagged" : [ "friends" ]
}, {
"name" : "Bernice Yu",
"phone" : "99272758",
"email" : "berniceyu@example.com",
"address" : "Blk 30 Lorong 3 Serangoon Gardens, #07-18",
"id" : "49ec-f5d46507b2c"
},
...
],
"groups" : [
...
]
}
The groups
JSON array consists of entries of each saved group and its details structured as a JSON object. The order the entries appear in the JSON array determines the order the entries will appear in ThunderCat.
In each group entry, this is the required attribute:
-
"name"
is a string that refers to the group’s saved name.
These are the optional attributes:
-
"description"
is a string that refers to the group’s saved description. -
"groupMateIds"
is a JSON array containing the IDs of the person entries of the group mates in the group.- The ID of each group mate must correspond to the ID in the group mate’s person entry.
- The group mate IDs must be unique within a group entry.
-
"tasks"
is a JSON array containing the entries of each saved task of a group and its details structured as a JSON object.
{
"persons" : [
...
],
"groups" : [ {
"name" : "ThunderCat",
"description" : "CS2103T tP Group",
"groupMateIds" : [ "49ec-f5d46507b2c", "0-0", "0-1", ... ],
"tasks" : [
...
]
}, {
"name" : "Carry"
},
...
]
}
The tasks
JSON array consists of the corresponding group’s entries of each saved task and its details structured as a JSON object. The order the entries appear in the JSON array determines the order the entries will appear in ThunderCat.
In each task entry, these are the required attributes:
-
"description"
is a string that refers to the task’s saved description. -
"isDone"
is a boolean value that is set totrue
if the task is done andfalse
otherwise.
{
"persons" : [
...
],
"groups" : [ {
"name" : "ThunderCat",
...
"tasks" : [ {
"description" : "Write the Developer Guide acknowledgements section",
"isDone" : true
}, {
"description" : "Polish the Developer Guide",
"isDone" : false
} ]
},
...
]
}
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 from the home folder of the application in your original computer.
Glossary
-
Home Page: The home page where the lists of persons and groups are displayed.
-
Group Information Page: The group information page where the lists of group members and tasks are displayed.
- JSON: JSON is an open standard file format and data interchange format that uses human-readable text to store and transmit data objects consisting of attribute–value pairs and arrays (or other serializable values).
- Hexadecimal: Hexadecimal describes a base-16 number system. That is, it describes a numbering system containing 16 sequential numbers as base units (including 0) before adding a new position for the next number.
- CLI: CLI stands for command line interface. Through the CLI, users interact with a system or application by typing in text (commands). The command is typed on a specific line following a visual prompt from the computer.
- GUI: GUI stands for graphical user interface. The graphical user interface is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, instead of text-based user interfaces, typed command labels or text navigation.