KonTActs is a desktop app designed for CS2030S Teaching Assistants (TAs) who work at the National University of Singapore, School of Computing.
KonTActs streamlines contact management, helping you keep track of your students' contact, attendance and assignment information more effectively compared to traditional GUI apps.
KonTActs' main features include:
KonTActs optimization features:
To get started,
Ensure you have Java 17
or above installed on your computer. Refer here for the specific version.
Download the latest .jar
file from here.
Copy the file to your chosen home folder for KonTActs.
Open a command terminal, cd
into home folder you put the jar file in, and enter java -jar kontacts.jar
to run the application.
Once the application starts, type view name/Alex Yeoh
into the command box as shown in the picture below.
An interface similar to the one 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. typing help
and pressing Enter will open the help window.
Examples of commands you can try:
list
: Lists all contacts.
mark name/Alex Yeoh week/0
: Marks Alex Yeoh
attendance in KonTActs.
delete name/Bernice Yu
: Deletes Bernice Yu
from KonTActs.
addGrade name/Alex Yeoh assignment/Ex01 score/9
: Assigns and adds Ex01
with a score of 9 to Alex Yeoh
.
The GUI should now look something like this.
clear
: Deletes all contacts. THIS IS AN IRREVERSIBLE ACTION.Action | Format, Examples |
---|---|
Add | add name/NAME email/EMAIL telegram/TELEGRAM [tag/TAG]… github/GITHUB e.g., add name/James Ho email/jamesho@example.com telegram/@James tag/friend tag/colleague github/james-cool |
Clear | clear This is an IRREVERSIBLE action! |
Delete | delete name/NAME e.g., delete name/James |
Edit | edit INDEX [name/NAME] [email/EMAIL] [telegram/TELEGRAM] [tag/TAG]… [github/GITHUB] e.g., edit 2 name/James Lee email/jameslee@example.com |
Find | find KEYWORD [MORE_KEYWORDS] e.g., find James Jake |
Filter | filter tag/TAG [tag/MORE_TAG]… e.g., filter tag/friends tag/family |
List | list |
Help | help |
View | view [name/NAME] e.g., view name/John Doe |
Github | github name/NAME e.g., github name/Harry |
Mark | mark name/NAME week/WEEK_NUMBER e.g. mark name/John Doe week/1 |
Unmark | unmark name/NAME week/WEEK_NUMBER e.g. unmark name/John Doe week/1 |
Sort | sort FIELD order/ORDER e.g. sort name order/asc |
Import | import path/CSV_FILE_PATH e.g import path/user/data/xxx.csv |
Export | export path/DESIRED_FILE_DESTINATION e.g export path/user/data/xxx.csv |
Command History | ↑ and ↓ |
Add grade | addGrade name/NAME assignment/ASSIGNMENT_NAME score/SCORE e.g. addGrade n/JohnDoe assignment/Ex01 score/5 |
Remove grade | removeGrade name/NAME assignment/ASSIGNMENT_NAME e.g. removeGrade name/John Doe assignment/Ex01 |
All parameters in KonTActs come equipped with their equivalent shortcuts.
Parameter | Shortcut |
---|---|
name/ | n/ |
email/ | e/ |
tag/ | t/ |
assignment/ | a/ |
score/ | s/ |
telegram/ | tele/ |
github/ | g/ |
week/ | w/ |
order/ | o/ |
path/ | p/ |
All commands supports shortcut parameters as long as they require the parameter.
This is illustrated in the examples of the individual commands.
Most commands in KonTActs come equipped with their equivalent shortcuts.
Command | Shortcut |
---|---|
mark | m |
unmark | um |
import | im |
export | ex |
find | fd |
filter | f |
view | v |
addGrade | ag |
removeGrade | rg |
delete | rm |
edit | e |
gitHub | git |
Notes about the command format:
Words in UPPER_CASE
are the parameters supplied by you.
e.g. add name/NAME
, NAME
is a parameter which can be used as add name/John Doe
.
Items in square brackets are optional.
e.g name/NAME [tag/TAG]
can be used as name/John Doe tag/friend
or as name/John Doe
.
Items with …
after them can be used multiple times including zero times.
e.g. [tag/TAG]…
can be used as (i.e. 0 times),
tag/friend
, tag/friend tag/family
etc.
Parameters can be in any order.
e.g. if the command specifies name/NAME telegram/TELEGRAM
, telegram/TELEGRAM name/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 the command specifies help 123
, it will be interpreted as help
.
Extra parameters for commands that do not have said parameters in their command format will be treated as input for
the previous parameter.
e.g. if the command input is delete name/John tag/student
, John tag/student
will be considered as the NAME input.
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
The help command opens the help window that shows the link to this user guide. The window adds access to copy the url to the clipboard or directly launch this user guide from the browser.
A compact reference guide is also provided for quick reference.
Format: help
add
Adds a person's contact detail to KonTActs.
Format: add name/NAME email/EMAIL telegram/TELEGRAM [tag/TAG]… github/GITHUB
Shortcut: add n/NAME e/EMAIL tele/TELEGRAM [t/TAG]… g/GITHUB
Name restrictions
Eg. n/John
or name/John
Email restrictions
Emails should be of the format local-part@domain
and adhere to the following constraints:
local-part
should only contain English alphanumeric characters and +
, _
, .
, -
.
The local-part
name:
@
and then a domain
name. The domain name is made up of domain labels separated by periods.
The domain name
must:
Eg. e/john@abc.com
or email/john@abc.com
A person can have any number of tags (including 0).
Tag restrictions
Eg. t/friend t/family
Telegram username restrictions
@
, and can only contain underscores (_
) and English alphanumeric characters.GitHub username restrictions
Valid examples
user123
, user-name
, username456
Invalid examples
very-mega-ultra-super-duper-long-username
, -username
, username-
, user--name
, username_with_special$chars
Examples:
add name/John Doe email/johnd@example.com telegram/@john github/swag-john33
adds John Doe's contact details with no
tags.add n/Betsy Crowe t/student e/betsycrowe@example.com tele/@Betsy t/Smart g/betsy-29
uses shortcut parameters to
add Betsy Crowe's contact details with a student and Smart tag.list
Displays all persons in KonTActs.
Format: list
edit
Edits an existing person detail in KonTActs.
Format: edit INDEX [name/NAME] [email/EMAIL] [telegram/TELEGRAM] [tag/TAG]… [github/GITHUB]
Shortcut: e INDEX [n/NAME] [e/EMAIL] [tele/TELEGRAM] [t/TAG]… [g/GITHUB]
INDEX
. The index refers to the index number shown in the displayed person list.
The index must be a positive integer 1, 2, 3, …t/
without
specifying any tags after it.Examples:
edit 1 email/johndoe@example.com
Edits the email address of the 1st person to be johndoe@example.com
respectively.edit 2 n/Betsy Crower t/
Edits the name of the 2nd person to be Betsy Crower
and clears all existing tags.
It uses shortcut parameters.edit 1 github/cool-james12 name/James
Edits the name of the 1st person to James
and github username
to cool-james12
.e 2 tele/@Mary n/Mary
Edits the name of the 2nd person to Mary
and telegram ID to @Mary
.
It uses shortcut command and parameters.find
Find all persons whose names contains any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
Shortcut: fd KEYWORD [MORE_KEYWORDS]
hans
will match Hans
.Hans Bo
will match Bo Hans
.Han
will not match Hans
.OR
search).
e.g. Hans Bo
will return Hans Gruber
, Bo Yang
.Examples:
fd John
returns john
and John Doe
using the shortcut command.find alex charlotte
returns Alex Yeoh
, Charlotte
.filter
Finds persons whose names contain any of the given tag keywords.
Format: filter tag/TAG [tag/MORE_TAG]...
Shortcut: f t/TAG [t/MORE_TAG]...
friends
will match Friends
t/friends t/family
will match t/family t/friends
.friend
will not match friends
.OR
search).
e.g. t/friends t/family
will return any contact tagged with friend
or family
.Examples:
f t/homies
returns any contact tagged with homies
. It uses the shortcut command and parameter.filter tag/friends
returns any contact tagged with friends
.delete
Deletes the specified person from KonTActs.
Format: delete name/NAME
Shortcut: rm n/NAME
Examples:
list
followed by rm n/Betsy
deletes the person with the name Betsy
. It uses the shortcut command and parameter.find Betsy
followed by delete n/Alex
will not delete the person named Alex
as Alex
does not appear in the
filtered list.delete name/Betsy
deletes the person named Betsy
if it is shown on the filtered list.github
Launches GitHub repository of the specified person on the browser from KonTActs.
Format: github name/NAME
Shortcut: git n/NAME
Browser security restrictions
KonTActs will attempt to open GitHub in your default browser. Please note that some browser security settings or pop-up blockers may prevent this. Please ensure that your browser allows new tabs or windows to be open from external applications before using the command.
Examples:
git n/James
launches the GitHub repository of the person named James
, using the GitHub username assigned to
James
. It uses the shortcut command.github name/Harry
launches the GitHub repository of the person named Harry
, using the GitHub username assigned
to Harry
.view
Opens a window at the side with the full details of the specified person from KonTActs.
Format: view [name/NAME]
Shortcut: v [n/NAME]
NAME
refers to the full name of the person shown in KonTActs.view
without any name parameter closes any windows previously opened by view
.view
closes view
.Examples:
view name/Alex Yeoh
opens a window at the side showing the full details of the person named Alex Yeoh
.v n/John Doe
followed by view
closes the window showing the full contact details of John Doe
. It uses
the shortcut command and parameter.mark
Marks a student as present for a particular week.
Format: mark name/NAME week/WEEK_NUMBER
Shortcut: m n/NAME w/WEEK_NUMBER
Examples:
mark name/Alex Yeoh week/0
marks the student named Alex Yeoh
as present for week 0.m n/Harry w/3
marks the student named Harry
as present for week 3. It uses the shortcut command and parameter.unmark
Unmarks a student as present for a particular week.
Format: unmark n/NAME w/WEEK_NUMBER
Shortcut: um n/NAME w/WEEK_NUMBER
Examples:
unmark name/Alex Yeoh week/0
marks the student named Alex Yeoh
as absent for week 0.um n/Harry w/3
marks the student named Harry
as absent for week 3. It uses the shortcut command and parameter.sort
Sorts the displayed list based on the given field and order.
sort FIELD order/ORDER
Reset Format: sort reset
Order of contact details can be reset to default by calling sort reset
.
FIELD
that can be sorted by: github
, name
, telegram
.ORDER
that is accepted: asc
, desc
.sort reset
command is given.Examples:
sort name order/desc
will sort the displayed list based on their name in ascending order.sort reset
will reset the displayed list to its default order.clear
Clears all entries from KonTActs.
This action is IRREVERSIBLE and it cannot be undone! You would lose all the contacts if they are not exported!
Format: clear
import
Imports contacts based on CSV file.
Format: import path/CSV_FILE_PATH
Shortcut: im p/CSV_FILE_PATH
Examples:
import path/data/group12.csv
will import the contacts found from the CSV (group12.csv from relative path given)im p/data/group12.csv
will do the exact same. It uses the shortcut command and parameter.import path//data/group12.csv
will import the contacts at the ABSOLUTE path given. (Absolute paths specify the exact
location in the file system, starting from the root directory, so the file group12.csv at the /data directory will be
imported regardless of where the program is run.)import path/../data/group12.csv
will import contacts from the CSV file (group12.csv) at the relative path. It moves
up one level from the current directory and then navigates to data folder, and imports the CSV file named "group12.csv".CSV file formatting:
The CSV file must have header with the exact required order {"Name", "Email", "Telegram", "Tags", "Github", "Assignments", "WeeksPresent"}
(Case-insensitive).
The CSV file must contain information about at least 1 person.
The data fields for Name, Email, Telegram, GitHub is compulsory.
Tags format: enclose tag in square brackets ("[tag]"). If a person has multiple tags, separate the tags within the same entry with commas. (e.g."[tag1],[tag2],[tag3].....")
Assignment format: Assignment name and assignment score should be separated with "|" (e.g. Ex01|10). If multiple assignments are present for a person, separate them within the same entry using commas. (e.g. Ex01|9, Ex02|5)
WeeksPresent format: Each integer represents a specific week, with each week separated by a comma. (e.g. 1,2,3,4).
Example of acceptable CSV file:
"Name","Email","Telegram","Tags","Github","Assignments","WeeksPresent"
"Alex Yeoh","alexyeoh@example.com","@alex","[friends]","Alex","Ex02 | 5.0,Ex01 | 5.0","3"
"Bernice Yu","berniceyu@example.com","@bernice","[colleagues],[friends]","Bernice","Ex02 | 5.0",""
"Charlotte Oliveiro","charlotte@example.com","@charlotte","[neighbours]","Charlotte","",""
"David Li","lidavid@example.com","@david","[family]","david","","5,6,10"
"Irfan Ibrahim","irfan@example.com","@irfan","[classmates]","Irfan","",""
"Roy Balakrishnan","royb@example.com","@roy","[colleagues]","Roy","",""
export
Exports contacts based on contacts and their details stored in KonTActs.
Format: export path/DESIRED_FILE_DESTINATION
Shortcut: ex p/DESIRED_FILE_DESTINATION
Examples:
export path/data/group12.csv
will export the contacts in KonTActs as a CSV file (group12.csv at the
RELATIVE path given).ex p/data/group12.csv
will do the exact same. It uses the shortcut command and parameter.export path//data/group12.csv
will export the contacts in KonTActs as a CSV file named group12.csv at the
ABSOLUTE path given. (Absolute paths specify the exact location in the file system, starting from the root directory,
so this file will be saved in the /data directory as group12.csv regardless of where the program is run.)export path/../data/group12.csv
will export contacts as a CSV file (group12.csv) to the relative path. It moves up
one level from the current directory and then navigates to data folder, and saves the CSV file as "group12.csv".KonTActs automatically saves every (valid or invalid) command entered which can then be retrieved later by using the ↑ and ↓ arrow keys.
Format: ↑ and ↓ arrow keys
Current input in the text field is erased when accessing the command history.
If the current session of KonTActs has no commands added, pressing the ↑ and ↓ arrow keys will not have any effect.
Examples:
github n/Harry
launches the github account of Harry on the browser.github n/Harry
.addGrade
Adds an assignment and its grades to a contact.
Format: addGrade name/NAME assignment/ASSIGNMENT_NAME score/SCORE
Shortcut: ag n/NAME a/ASSIGNMENT_NAME s/SCORE
Assignments that can be added to a contact are specified in path data/assignment.json
.
If assignment.json
is missing from data
, KonTActs will load a default assignment database.
assignment.json
needs to be manually created in data
.
Each assignment must have a unique ASSIGNMENT_NAME
.
If SCORE
has more than 2 decimal places, its display will be truncated to 2 decimal places.
Examples:
addGrade name/JohnDoe assignment/Ex01 score/5
will add an assignment name Ex01
with score 5 to contact JohnDoe.
Alternatively, ag n/JohnDoe a/Ex01 s/5
will do the same using the shortcut command and parameters.
addGrade n/JohnDoe a/Ex01 s/12
will not add the assignment to contact JohnDoe
as the input score is greater than the max, as specified in the assignment.json
file.
addGrade n/JohnDoe a/Ex05 s/5
will not add the assignment to contact JohnDoe
as the assignment is not specified assignment.json
Calling addGrade
without any fields will show the list of assignments in assignment.json
.
Steps to set up assignment.json file:
assignment.json
in the /data
folder.{
"assignments" : [
{
"name": "Ex01",
"maxScore": 10
}, {
"name": "Ex02",
"maxScore": 10
}, {
"name": "Ex03",
"maxScore": 15
}
]
}
{
"name": "Ex04",
"maxScore": 15
}
{
"assignments" : [
{
"name": "Ex01",
"maxScore": 10
}, {
"name": "Ex02",
"maxScore": 10
}, {
"name": "Ex03",
"maxScore": 15
}, {
"name": "Ex04",
"maxScore": 15
}
]
}
removeGrade
Removes an assignment and its grades from a contact.
Format: removeGrade name/NAME assignment/ASSIGNMENT_NAME
Shortcut: rg n/NAME a/ASSIGNMENT_NAME
Examples:
Assuming John Doe has Ex01
assignment with a score of 5
.
Calling removeGrade name/John Doe assignment/Ex01
will remove the Ex01
assignment from contact John Doe.
Alternatively, rg n/John Doe a/Ex01
will do the same with the shortcut command and parameter.
Calling removeGrade n/John Doe a/Ex01
again will throw an error since the assignment has already been removed.
To add a new assignment, refer to addGrade
command above.
exit
Exits the program.
Format: exit
KonTActs data are automatically saved in the hard disk after every command that changes data. You do not need to save the data manually.
However, it is always good practice to have a local backup 😄. You can do this with the export command.
KonTActs data are saved automatically as a JSON file [JAR_file_location]/data/kontacts.json
.
Recommended for more advanced and seasoned users
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 KonTActs home folder. Alternatively, you can use the export command to export the data
into a CSV file and import the CSV file into your other device.
Q: Why are duplicate names not allowed?
A: KonTActs identifies the students by their unique name to add grades or take attendance internally. This makes
it not possible for KonTActs to accept duplicate names.
Furthermore, we believe that duplicate names are better managed based on how the tutor identifies them. Different people
have different method of remembering people with the same name. For instance, given two John
s, a tutor might identify
them physically as John 1
and John 2
or by their surname, John Doe
and John Tan
. This identification should
also be reflected in KonTActs to make it easy to distinguish the two students.
Q: Why are duplicate fields like Email, Telegram and Github usernames allowed?
A: KonTActs recognizes that students may use the same usernames and emails across different points of contact. To provide greater flexibility in the application, KonTActs permits duplicate entries for email addresses, Telegram handles, and GitHub usernames.
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. The remedy is
to manually restore the minimized Help Window.'
to escape from the
command function. For example: typing '@james
.view
. This is intended so that the list view does not become cluttered with too much information./
characters will cause konTActs to show an error message although a person can legally have /
in their legal name such as Kumar S/O Mahesh
. This is a limitation within konTActs as it uses the /
charcter internally. The solution for this is to totally omit the /
altogether. In this case, the name may be added as Kumar SO Mahesh
or Kumar son of Mahesh
depending on your preference.