User Guide
tApp is a desktop app for managing tutorial groups and personal tasks, optimized for use via a Command Line Interface (CLI). If you are a TA that is looking for an app that integrates different tools into a centralised platform and tracks your TA tasks, tApp is the app for you.
- Quick start
- Features
- Command summary
Quick start
-
Ensure you have Java
11or above installed in your Computer. -
Download the latest
tApp.jarfrom here. -
Copy the file to the folder you want to use as the home folder for your tApp.
-
Double-click the file to start the app. The GUI similar to the 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
helpand pressing Enter will open the help window.
Some example commands you can try:-
students: Lists all students. -
addStudentn/Tom Lim e/tom@u.nus.edu s/A0123456B: Adds a student namedTom Limto the student list. -
deleteStudent3: Deletes the 3rd student shown in the current list. -
clearStudents: Deletes all students. -
exit: Exits the app.
-
-
Refer to the Features below for details of each command.
Features
Notes about the command format:
-
Words in
UPPER_CASEare the parameters to be supplied by the user.
e.g. inaddStudent n/NAME,NAMEis 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/csor asn/John Doe. -
Items with
… after them can be used multiple times including zero times.
e.g.[t/TAG]…can be used as(i.e. 0 times),t/year2,t/year2 t/csetc. -
Parameters can be in any order.
e.g. if the command specifiesn/NAME s/STUDENT_NUMBER,s/STUDENT_NUMBER n/NAMEis 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 specifys/A0221393L s/A0114938H, onlys/A0114938Hwill be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help,students,exitandclearStudents) will be ignored.
e.g. if the command specifieshelp 123, it will be interpreted ashelp.
Students
List all students: students
Shows a list of all students inputted into tApp together with their attendance and participation scores for tutorials.
Format: students
Examples:
-
studentsreturns a list of all students with their information and attendance scores
Add a student : addStudent
Adds a student to the student list.
Format: addStudent n/NAME e/EMAIL s/STUDENTNUMBER [u/GITHUB USERNAME] [r/REPO NAME] [t/TAG]…
-
NAMEshould only contain alphabets and spaces. - GitHub link will only be shown if both
GITHUB USERNAMEandREPO NAMEare specified. -
STUDENTNUMBERmust consist of a character, followed by 7 digits, followed by another character. Case of character does not matter. -
EMAILmust be of the formlocal-part@domainwhere-
local-partshould only contain alphanumeric characters and+_.-, and cannot start or end with+_.-. -
domainis made up ofdomain labelsseparated by periods and must:- end with a
domain labelat least 2 characters long - have each
domain labelstart and end with alphanumeric characters - have each
domain labelconsist of alphanumeric characters, separated only by hyphens, if any
- end with a
-
- If only either
GITHUB USERNAMEorREPO NAMEare specified, the data will still be saved but not shown. - If the same student is edited and the remaining empty data field is entered, a proper GitHub link will be shown.
-
TAGhas a character limit of 20 and must be alphanumeric with no spaces.
Examples:
-
addStudent n/John Doe e/johnd@u.nus.edu s/A0123456B u/user r/ip t/friends t/owesMoneyadds John Doe to the list and displays a confirmation output with a proper GitHub link -
addStudent n/Bohn Doe e/bohnd@u.nus.edu s/A0123456C u/useradds Bohn Doe to the list and displays a confirmation output without a proper GitHub link, but storing theGITHUB USERNAMEin memory nonetheless.
Edit a student : editStudent
Edits an existing student in the last displayed student list.
Format: editStudent INDEX [n/NAME] [s/STUDENT_NUMBER] [e/EMAIL] [r/REPO_NAME] [u/USERNAME] [t/TAG]…
- Edits the student at the specified
INDEX. The index refers to the index number shown in the displayed student 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 student will be removed i.e adding of tags is not cumulative.
- You can remove all the student’s tags by typing
t/without specifying any tags after it. - This command flags out indexes less than 1 first, before missing fields, ensuring the validity of the fields, and finally the validity of index that is greater than 0. (If an invalid index greater than 0 is entered with no or wrong fields, the command would not check the validity of the index)
Examples:
-
editStudent 1 s/A0221111L e/johndoe@u.nus.eduEdits the student number and email address of the 1st student to beA0221111Landjohndoe@u.nus.edurespectively. -
editStudent 2 n/Betsy Crower t/Edits the name of the 2nd student to beBetsy Crowerand clears all existing tags.
Delete a student: deleteStudent
Deletes the specified student from the last displayed student list.
Format: deleteStudent INDEX
- Deletes the student at the specified
INDEX. - The index must refer to the index number shown in the last displayed students list.
- The index number must be a positive number: 1, 2, 3…
- Duplicate and multiple indexes are not allowed.
Examples:
-
studentsfollowed bydeleteStudent 1removes the 1st student in the students list.
Marking a student’s attendance: marka
Marks the specified student(s) in the last displayed student list as present or absent.
Format: marka INDEX [MORE_INDEXES]… w/WEEK_NUMBER
- Marks the student(s) as present (or absent) in the specified
INDEX(ES). - The index must refer to the index number shown in the last displayed students list.
- The index and week number must be a positive number, and must correspond to the tutorial weeks of the semester: 3, 4… 12.
- Duplicate indexes are not allowed.
- Only one week number should be specified after the
w/prefix. - If the student at the specified
INDEXis marked as present, the command toggles the attendance to absent. - If the student at the specified
INDEXis marked as absent, the command toggles the attendance to present.
Examples:
-
studentsfollowed bymarka 1 2 3 w/10marks the 1st, 2nd and 3rd student in the students list as present in week 10. - Another
marka 1 w/10instance will mark the 1st student in the student list as absent in week 10.
Marking a student’s participation: markp
Marks the specified student(s) in the last displayed student list as participated or not participated.
Format: markp INDEX [MORE_INDEXES]… w/WEEK_NUMBER
- Marks the student(s) as participated in the specified
INDEXfor that week. - The index must refer to the index number shown in the last displayed students list.
- The index and week number must be a positive number, and must correspond to the tutorial weeks of the semester: 3, 4… 12.
- Duplicate indexes are not allowed.
- Only one week number should be specified after the
w/prefix. - If the student at the specified
INDEXis marked as participated, the command toggles the participation to not not participated. - If the student at the specified
INDEXis marked as not participated, the command toggles the participation to not participated.
Examples:
-
studentsfollowed bymarkp 1 2 3 w/10marks the 1st, 2nd and 3rd student in the students list as participated in week 10. - Another
markp 2 w/10instance will mark the 1st student in the student list as not participated in week 10.
Find student by name: findStudent
Finds students whose names contain any of the given keywords.
Format: findStudent KEYWORD [MORE_KEYWORDS]
- 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.
- Numbers and special characters will be ignored e.g.
Alice!will matchAlice - Partial names will be matched e.g.
Hanwill matchHans - Students matching at least one keyword will be returned (i.e.
ORsearch). e.g.Hans Bowill returnHans Gruber,Bo Yang
Examples:
-
findStudent Joh@returnsjohnandJohn Doe, if there are students named ‘john’ and ‘John Doe’ -
findStudent alex! davireturnsAlex Yeoh,David Li, if there are students named ‘Alex Yeoh’ and ‘David Li’
Clearing all entries from student list: clearStudents
Clears all entries from the student list.
Format: clearStudents
Groups
List all groups: groups
Shows a list of all groups inputted into tApp together with its group members and group GitHub link if any are added.
Format: groups
Examples:
-
groupsreturns a list of all groups with their information.
Add a group: addGroup
Adds a group to the group list. No members will be initialized.
Format: addGroup g/GROUP_NAME [r/REPO_NAME] [y/YEAR] [t/TAG]…
- Similar to
addStudent, GitHub link will only be shown if bothYEARandREPO NAMEare specified, but either field will still be saved if specified alone. -
GROUP_NAMEmust be contain a character, followed by 2 digits, a dash (-), followed by another digit. The case of the character does not matter. -
YEARrepresents the year field used in CS2103 GitHub links and not an actual calendar year. Input is therefore flexible to allow for changes in year formatting -
TAGhas a character limit of 20 and must be alphanumeric with no spaces.
Examples:
-
addGroup g/W15-4 y/AY2122S1 r/tp t/tAppadds group W15-4 to the list and displays a confirmation output with GitHub link and no group members -
addGroup g/f14-4 y/AY2122S1adds group F14-4 to the list and displays a confirmation output with no GitHub link and group members
Editing a group : editGroup
Edits a group from the last displayed group list.
Format: editGroup INDEX [g/GROUP_NAME] [r/REPO_NAME] [y/YEAR] [t/TAG]…
- Edits the group at the specified
INDEX. - The index refers to the index number shown in the last displayed group 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 group will be removed i.e adding of tags is not cumulative.
- You can remove all the group’s tags by typing
t/without specifying any tags after it. - Similar to
editStudentthis command flags out index values less than 1 first, before missing fields, ensuring the validity of the fields, and finally the index that is greater than 0.
Examples:
-
editGroup 1 g/W11-4 r/tp2Edits the group name and repository name of the 1st group to beW11-4andtp2respectively. -
editGroup 2 y/AY20212022 t/Edits the name of the 2nd group to beAY20212022and clears all existing tags.
Delete a group: deleteGroup
Deletes the specified group from the last displayed group list.
Format: deleteGroup INDEX
- Deletes the student at the specified
INDEX. - The index refers to the index number shown in the last displayed group list.
- The index must be a positive integer 1, 2, 3, …
- Duplicate and multiple indexes are not allowed.
Examples:
-
deleteGroup 1deletes the group with index 1 in group list and displays a confirmation output with the group members and GitHub link of the group deleted.
Add a student to a group: addMember
Adds a student in the last displayed student list to an existing group in the group list.
Format: addMember INDEX g/GROUP
- Adds the student specified at
INDEXto the group with name specified byGROUP. - The index refers to the index number shown in the last displayed student list.
- The index must be a positive integer 1, 2, 3, …
-
GROUPmust be an existing group in the group list.
Examples:
-
addMember 1 g/W10-2adds the student with index 1 in the student list to group W10-2 and displays a confirmation output that the student has been added to the group.
Delete a student from a group: deleteMember
Deletes the specified member from the last displayed group list.
Format: deleteMember GROUP_INDEX STUDENT_INDEX
- Deletes the student at the specified
STUDENT_INDEXin the group at the specifiedGROUP_INDEX. - The indexes refer respectively, to the index number shown in the last displayed group list and group member list.
- The indexes must be a positive integer 1, 2, 3, …
Examples:
-
deleteMember 1 2deletes the member with index 2 in the group member list of the group with index 1 in group list and displays a confirmation output with the affected group member and group name.
Locating group by name: findGroup
Find groups whose names contain any of the given keywords.
Format: findGroup KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
w14-4will matchW14-4 - The order of the keywords does not matter. e.g.
w14 w15will matchw15 w14 - Only the group name is searched.
- All special characters except dashes (
-) will be ignored e.g.w14!will matchw14 - Partial group names will be matched e.g.
w14will matchw14-4 - Groups matching at least one keyword will be returned (i.e.
ORsearch). e.g.w14 w15will returnw14-4,w14-3,w15-1
Examples:
-
findGroup w14returnsW14-3andW14-4 -
findGroup w14 w15returnsW14-3,W14-4,W15-2
Clearing all entries from group list: clearGroups
Clears all entries from the group list.
Format: clearGroups
Tasks
List all tasks: tasks
Displays all the tasks currently in the task list.
All tasks are sorted with completed tasks at the bottom of the list.
Pending tasks are then sorted by their associated dates, with those with the earliest date at the top of the list. TodoTasks, which do not have a date, are placed at the bottom of the list.
Tasks that have the same associated date are then sorted by their priority level, with the highest priority level at the top.
Format: tasks
Add a todo task: todo
Adds a todo task.
Format: todo n/TASK_NAME [d/DESCRIPTION] [p/TASK_PRIORITY] [t/TAG]…
- Adds a todo task with the specified
TASK_NAME - The possible priorities are High, Medium and Low.
-
p/Hmarks a task as High Priority,p/Mmarks a task as Medium Priority,p/Lmarks a task as Low Priority. - The priority parameter accepts partial words and is case-insensitive.
- A combination of different priority levels are not accepted.
- Tasks that are not specified a priority level will be by default Low Priority.
-
DESCRIPTIONshould only contain ASCII characters. -
TAGhas a character limit of 20 and must be alphanumeric with no spaces.
Examples:
-
todo n/playcreates the todo task “play” with the default LOW Priority. -
todo n/study p/Hcreates the todo task “study” and marks it as HIGH Priority. -
todo n/CS2103 d/Prepare for Tutorial p/Mcreates the todo task “CS2103” with the description “Prepare for tutorial” and with MEDIUM Priority. -
todo n/Complete tP d/Last chance to add features t/CS2103 t/work p/Hcreates a todo task ‘Complete tP’ with the description “Last chance to add features” and tags “CS2103” & “work” with High Priority.
Add an event task: event
Adds an event task with the given event date.
Format: event n/TASK_NAME on/EVENT_DATE [d/DESCRIPTION] [p/TASK_PRIORITY] [t/TAG]…
- Adds an event task with the specified
TASK_NAME - The event task has the taskDate
DATE - The taskDate must be in the format
YYYY-MM-dd - Priority, description and tags are similar to Todo Task.
Examples:
-
event n/Party on/2021-09-23 p/Mcreates the event task “party”, on “2021-09-23” with Medium Priority. -
event n/Exam on/2021-10-04creates the event task “exam”, on “2021-10-04”, with Low Priority.
Add a deadline task: deadline
Adds a deadline task with a specified deadline.
Format: event n/TASK_NAME by/DEADLINE [d/DESCRIPTION] [p/TASK_PRIORITY] [t/TAG]…
- Adds a deadline task with the specified
TASK_NAME - The deadline task has the task date
DEADLINE - The taskDate must be in the format
YYYY-MM-dd - Priority, description and tags are similar to Todo Task.
Examples:
-
deadline n/tutorial participation by/2021-09-23 p/Hcreates the deadline task “tutorial participation”, with deadline “2021-09-23” with HIGH Priority. -
deadline n/assignment submission by/2021-10-04creates the deadline task “assignment submission”, with the deadline “2021-10-04” with LOW Priority.
Editing a task: editTask
Edits an existing task in the tasks list.
Format: editTask INDEX [n/NAME] [d/DESCRIPTION] [p/PRIORITY] [t/TAG]…
- Edits the task at the specified
INDEX. The index refers to the index number shown in the displayed task list. - The index must be a positive integer 1, 2, 3, …
- Command can be used to edit any of the three types of tasks:
todo,eventanddeadline - At least one of the optional fields must be provided.
- Existing values will be updated to the input values.
- If the task being edited is an
event, the date of the event can be edited by applying theon/flag followed by a new date. i.eeditTask INDEX on/DATE. Theon/flag is invalid for other types of tasks. - If the task being edited is a
deadline, the date of the deadline can be edited by applying theby/flag followed by a new date. i.eeditTask INDEX by/DATE. Theby/flag is invalid for other types of tasks. - When editing tags, the existing tags of the student will be removed i.e adding of tags is not cumulative.
- You can remove all the task’s tags by typing
t/without specifying any tags after it.
Examples:
-
editTask 1 n/Tutorial Preparation d/Presentation p/mediumEdits the name, description and priority of the 1st task to beTutorial Preparation,Presentationandmediumrespectively. -
editTask 2 n/Final Examination on/2021-10-12 t/Edits the name and date of the 2nd task to beFinal Examinationand2021-10-12, and clears all existing tags.
Deleting a task: deleteTask
Deletes the specified task from the task list.
Format: deleteTask INDEX
- Deletes the task at the specified
INDEX. - The index must refer to the index number shown in the displayed task list.
- The index and week number must be a positive number: 1, 2, 3…
Examples:
-
deleteTask 1removes the 1st task in the task list.
Marking a task as done: doneTask
Mark the specified task(s) in the task list as completed or pending.
Format: doneTask INDEX [MORE_INDEXES]…
- The index refers to the index number shown in the task list.
- The user is able to mark multiple tasks by providing multiple indexes.
- The indexes must be a positive integer 1, 2, 3, …
- Duplicate indexes are not accepted.
- If the task at the specified
INDEXis marked as pending, usingdoneTask INDEXwill mark it as complete. - If the task at the specified
INDEXis marked as complete, usingdoneTask INDEXwill mark it as pending.
Examples:
-
doneTask 2marks the 2nd task in the task list as completed or pending. -
doneTask 1 3 4marks the 1st, 3rd and 4th tasks in the task list as completed or pending.
Clearing all entries from task list: clearTasks
Clears all entries from the task list.
Format: clearTasks
Clearing all entries from tApp: clearAll
Clears all entries from tApp.
Format: clearAll
Viewing help : help
Shows a popup with all the available commands.

Format: help
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
tApp 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
tApp data are saved as a JSON file [JAR file location]/data/tApp.json. Advanced users are welcome to update data directly by editing that data file.
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 tApp home folder.
Command summary
Students
| Commands | Format | Examples |
|---|---|---|
| List Students | students |
|
| Add Student | addStudent n/NAME s/STUDENT_NUMBER e/EMAIL [t/TAG]… |
e.g., addStudent n/Clara Ng s/A0221111W e/clara@u.nus.edu
|
| Edit Student | editStudent INDEX [n/NAME] [s/STUDENT_NUMBER] [e/EMAIL] [r/REPO NAME] [u/USERNAME] [t/TAG]… |
e.g., editStudent 1 s/A0221111L e/johndoe@u.nus.edu
|
| Delete Student | deleteStudent INDEX |
e.g., deleteStudent 1
|
| Mark Student Attendance | marka INDEX w/WEEK |
e.g., marka 1 w/10
|
| Mark Student Participation | markp INDEX w/WEEK |
e.g., markp 1 w/10
|
| Find Student | findStudent KEYWORD [MORE_KEYWORDS] |
e.g., findStudent David
|
| Clear Students | clearStudents |
Groups
| Commands | Format | Examples |
|---|---|---|
| List Groups | groups |
|
| Add Group | addGroup g/NAME [y/YEAR] [r/REPO NAME] [t/TAG]… |
e.g., addGroup g/W14-5 r/tp y/AY20222023
|
| Edit Group | editGroup INDEX [g/NAME] [r/REPO NAME] [y/Year] [t/TAG]… |
e.g., editGroup 2 g/W14-4 r/tp y/AY20212022
|
| Delete Group | deleteGroup INDEX |
e.g., deleteGroup 1
|
| Add Student to Group | addMember INDEX g/GROUP |
e.g., addMember 2 g/W14-4
|
| Delete Student from Group | deleteMember GROUP_INDEX STUDENT_INDEX |
e.g., deleteMember 2 1
|
| Find Group | findGroup KEYWORD [MORE_KEYWORDS] |
e.g., findGroup W15-5
|
| Clear Groups | clearGroups |
Tasks
| Commands | Format | Examples |
|---|---|---|
| List Tasks | tasks |
|
| Add Todo Task | todo n/TASK_NAME [t/TAG]… |
e.g., todo n/tP t/CS2103
|
| Add Event Task | event n/TASK_NAME on/DATE [t/TAG]… |
e.g., event n/Final Exam on/2021-10-31 t/CS2103
|
| Add Deadline Task | deadline n/TASK_NAME by/DEADLINE [t/TAG]… |
e.g., deadline n/Finish tP by/2021-10-31 t/W14-4
|
| Edit Task | editTask INDEX [n/TASK_NAME] [by/DATE] [t/TAG]… |
e.g.,editTask 2 n/study by/2012-10-31 t/W14-4
|
| Delete Task | deleteTask INDEX |
e.g., deleteTask 3
|
| Mark Done Task | doneTask INDEX [MORE INDEXES] |
e.g., doneTask 1 2 3
|
| Clear Tasks | clearTasks |
General
| Action | Format, Examples |
|---|---|
| Clear Address Book | clearAll |
| Help | help |
| Exit | exit |