Teletutors is a desktop app for managing contacts, 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, Teletutors can get your contact management tasks done faster than traditional GUI apps.
Ensure you have Java 17 or above installed in your Computer.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your Teletutors.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar teletutor.jar command to run the application.
A GUI similar to the one below should appear in a few seconds.

Pressing the up arrow key (↑) will recall the last valid command entered, allowing for modification of previous commands, similar to a command terminal
Pressing the down arrow key (↓) will recall the next valid command entered, allowing for retrieval of succeeding commands, similar to a command terminal
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.
Some example commands you can try:
list : Lists all contacts.
adds n/John Doe p/98765432 tg/G17 sn/A1234567Z : Adds a student named John Doe to the Teletutor contact list.
deletes n/John Doe : Deletes the contact with the name John Doe.
exit : Exits the app.
Refer to the Features below for details of each command.
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in adds n/NAME, NAME is a parameter which can be used as adds n/John Doe.
Items in square brackets are optional.
e.g. n/NAME [sn/STUDENT_NUMBER] can be used as n/John Doe sn/A1234567Z or as n/John Doe.
Parameters can be in any order.
e.g. if the command specifies n/NAME p/PHONE_NUMBER, p/PHONE_NUMBER n/NAME is also acceptable.
Extraneous parameters for commands that do not take in parameters (such as help, list, exit, deleteall, undo) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
Extraneous parameters for commands that do take in parameters (such as adds, deletes) will result in undefined behaviour.
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.
Name arguments with extra whitespaces between words will be reduced to a single whitespace.
e.g. n/John Doe will be treated as n/John Doe.
Tutorial group and student number arguments are not case-sensitive.
G17, Z19, T15, etc.helpShows a message explaning how to access the help page.
Format: help
exitExits the program.
Format: exit
undoUndoes the previous command.
The help and closeat commands are currently not undoable (planned for future versions).
Format: undo
| Prefix | Constraints | Example |
|---|---|---|
n/ | Names should only contain alphanumeric characters and spaces, and it should not be blank. Additionally, name fields do not allow special characters like "/". Names that include "D/O" or "S/O" should be replaced by "DO" and "SO" respectively | valid: n/John Doeinvalid: n/, n/Thiru S/o Damith |
p/ | Phone numbers should only contain numbers, and it should be at least 3 digits long | valid: p/98765432invalid: p/1234 5678 |
tg/ | Tutorial group should only be in the format of a letter followed by two numbers. | valid: tg/G01invalid: tg/G1 |
sn/ | Student number should be in the format of a letter followed by 7 numbers and a letter. | valid: sn/A1234567Zinvalid: sn/1234567z |
addsAdds a student to the contact list.
Format: adds n/NAME p/PHONE_NUMBER tg/TUTORIAL_GROUP sn/STUDENT_NUMBER
Tip: A student must have a unique student number, so if the same student number is used for a new student, the user will be informed that the student already exists in the list.
Examples:
adds n/John Doe p/98765432 tg/G69 sn/E1234567Iadds n/Betsy Crowe tg/G16 p/23456789 sn/a1234567zlistShows a list of all students in the contact list.
Format: list
editsEdits an existing student in the contact list.
Format: edits INDEX [n/NAME] [p/PHONE] [tg/TUTORIAL_GROUP] [sn/STUDENT_NUMBER]
INDEX. The index refers to the index number shown in the displayed contact list. The index must be a positive integer 1, 2, 3, …Examples:
edits 1 p/91234567 tg/Z19 Edits the phone number and tutorial group of the 1st person in the displayed list to be 91234567 and Z19 respectively.edits 2 n/Betsy Crower Edits the name of the 2nd person in the displayed list to be Betsy Crower.viewView student(s) whose name matches the specified name exactly.
Format: view NAME
view John will not return John Doe's details.view mary will not return Mary's details.view John Doe will not return JohnDoe's details, and view JohnNg will not return John Ng's details.Examples:
view Alex Yeoh Displays the details of all students with the exact name Alex Yeoh.view Lynette Displays the details of all students with the exact name Lynette.deletesDeletes the specified student from the contact list.
Format: deletes n/NAME [sn/STUDENT_NUMBER]
Examples:
deletes n/John Tan deletes the student with the exact name John Tan from the contact list.deletes n/Betsy sn/A0123456X deletes the student with the exact name Betsy and student number A0123456X from the contact list.deleteallDeletes all students from the contact list.
Format: deleteall
| Prefix | Constraints | Example |
|---|---|---|
n/ | Names should only contain alphanumeric characters and spaces, and it should not be blank. Additionally, name fields do not allow special characters like "/". Names that include "D/O" or "S/O" should be replaced by "DO" and "SO" respectively | valid: n/John Doeinvalid: n/, n/Thiru S/o Damith |
dt/ | Dates should be in the format "YYYY-MM-DD" | valid: dt/2019-01-01invalid: dt/, dt/1 Jan 2019 |
pr/ | Attendance should either be "p" or "a". | valid: pr/p, pr/a invalid: pr/P, pr/A, pr/present, pr/absent |
tg/ | Tutorial group should only be in the format of a letter followed by two numbers. | valid: tg/G01invalid: tg/G1 |
sn/ | Student number should be in the format of a letter followed by 7 numbers and a letter. | valid: sn/A1234567Zinvalid: sn/1234567z |
IMPORTANT: Any command that has the optional field sn/STUDENT_NUMBER can be used without the student number if the student number is not known. However, if there are multiple students with the same name, the student number is required to differentiate between them.
markatMarks attendance of student for a particular date with the specified details.
Format: markat n/NAME dt/DATE pr/ATTENDANCE [sn/STUDENT_NUMBER]
Examples:
Adam Lee is a unique name, markat n/Adam Lee dt/2024-12-12 pr/p marks the student with the name Adam Lee present on 2024-12-12.Mary Tan is a unique name, markat n/Mary Tan dt/2024-09-11 pr/a marks the student with the name Mary Tan absent on 2024-09-11.Adam Lee, markat n/Adam Lee dt/2024-12-12 pr/p sn/A1234567Z marks the student with the name Adam Lee and student number A1234567Z present on 2024-12-12.Mary Tan, markat n/Mary Tan dt/2024-09-11 pr/a sn/A0123456X marks the student with the name Mary Tan and student number A0123456X absent on 2024-09-11.markpresentallMarks all students in a tutorial group as present for a particular date
Format: markpresentall tg/TUTORIAL_GROUP dt/DATE
markabsentallMarks all students in a tutorial group as absent for a particular date
Format: markabsentall tg/TUTORIAL_GROUP dt/DATE
deleteatDeletes attendance of student for a particular date with the specified details.
Format : deleteat n/NAME dt/DATE [sn/STUDENT_NUMBER]
deleteatallDeletes attendance of all students in a tutorial group for a particular date
Format : deleteatall tg/TUTORIAL_GROUP dt/DATE
getatGets attendance of student for a particular date
Adam Lee is a unique name, getat n/Adam Lee dt/2024-12-12 gets the student with the name Adam Lee's attendance on 2024-12-12.Mary Tan is a unique name, getat n/Mary Tan dt/2024-09-11 gets the student with the name Mary Tan's attendance on 2024-09-11.Adam Lee, getat n/Adam Lee dt/2024-12-12 sn/A1234567Z gets the student with the name Adam Lee and student number A1234567Z's attendance on 2024-12-12.Mary Tan, getat n/Mary Tan dt/2024-09-11 sn/A0123456X gets the student with the name Mary Tan and student number A0123456X's attendance on 2024-09-11.Format: getat n/NAME dt/DATE [sn/STUDENT_NUMBER]
getattgOpens an attendance window for all students in a tutorial group for all dates that are currently known.
undo will close the last window opened by this commandFormat: getattg tg/TUTORIAL_GROUP
closeatCloses all attendance windows if any are currently open.
Assignments are displayed with different colors based on the following criteria:
| Prefix | Constraints | Example |
|---|---|---|
n/ | Names should only contain alphanumeric characters and spaces, and it should not be blank. Additionally, name fields do not allow special characters like "/". Names that include "D/O" or "S/O" should be replaced by "DO" and "SO" respectively | valid: n/John Doeinvalid: n/, n/Thiru S/o Damith |
a/ | Assignment names should only contain alphanumeric characters and spaces, and it should not be blank. Additionally, assignment names should be unique. | valid: a/Assignment 5 invalid: a/ Assignmment@2 |
tg/ | Tutorial group should only be in the format of a letter followed by two numbers. | valid: tg/G01invalid: tg/G1 |
sn/ | Student number should be in the format of a letter followed by 7 numbers and a letter. | valid: A1234567N invalid: B1234567C, A123B |
d/ | Dates should be in the format YYYY-MM-DD | valid: 2024-12-01 invalid: 2023-5-1, 5-1-2024 |
g/ | Grade is an decimal number between 0 and 100 inclusive or NULL (Case Sensitive). | valid: NULL, 5, 98 invalid: 101, null |
addaAdds an assignment to the specified student
Format: adda n/NAME a/ASSIGNMENT_NAME d/DEADLINE [s/SUBMISSION_STATUS] [g/GRADE] [sn/STUDENT_NUMBER]
NAME. If student number is provided, this adds an assignment to the student
with STUDENT_NUMBER and NAME.NAME, a student number must be provided.SUBMISSION_STATUS defaults to N (i.e. not submitted).GRADE defaults to NULL (i.e. not graded).deleteaDeletes an assignment for the specified student
Format: deletea n/NAME a/ASSIGNMENT_NAME [sn/STUDENT_NUMBER]
ASSIGNMENT_NAME to the student with NAME. If student number is provided,
this deletes the assignment for the student with STUDENT_NUMBER and NAME.NAME, a student number must be provided.editaEdits an assignment for the specified student
Format: edita n/NAME a/ASSIGNMENT_NAME [d/DEADLINE] [s/SUBMISSION_STATUS] [g/GRADE] [sn/STUDENT_NUMBER]
ASSIGNMENT_NAME to the student with NAME. If student number is provided,
this edits the assignment for the student with STUDENT_NUMBER and NAME.NAME, a student number must be provided.addatgAdds an assignment to all students from the specified tutorial group
Format: addatg tg/TUTORIAL_GROUP a/ASSIGNMENT_NAME d/DEADLINE
TUTORIAL_GROUP.Teletutors data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Teletutors data are saved automatically as a JSON file [JAR file location]/data/teletutor.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, Teletutors will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause the Teletutors to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
[coming in v2.0]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 Teletutors home folder.
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.Assignment's Dates. Will be implemented in future versions.closeat command will not account for windows that are manually closed using the X button.| Action | Format, Examples |
|---|---|
| Add Student | adds n/NAME p/PHONE_NUMBER tg/TUTORIAL_GROUP sn/A1234567J e.g., adds n/P Diddy p/22224444 tg/G17 sn/A1234567J |
| Clear Contact List | deleteall |
| Delete Student | deletes n/NAME [sn/STUDENT_NUMBER]e.g., deletes n/John Doe sn/A1234567Z |
| Edit Student | edits INDEX [n/NAME] [p/PHONE_NUMBER] [tg/TUTORIAL_GROUP] [sn/STUDENT_NUMBER]e.g., edits 2 n/James Lee p/12345678 |
| View Student(s) | view NAMEe.g., view James Jake |
| List | list |
| Help | help |
| Undo | undo |
| Mark Attendance | markat n/NAME dt/DATE pr/ATTENDANCE [sn/STUDENT_NUMBER]e.g., markat n/John Doe dt/2021-10-10 pr/p sn/A1234567Z |
| Mark Present for Tutorial Group | markpresentall tg/TUTORIAL_GROUP dt/DATEe.g., markpresentall tg/G17 dt/2021-10-10 |
| Mark Absent for Tutorial Group | markabsentall tg/TUTORIAL_GROUP dt/DATEe.g., markabsentall tg/G17 dt/2021-10-10 |
| Delete Student's Attendance | deleteat n/NAME dt/DATE [sn/STUDENT_NUMBER]e.g., deleteat n/John Doe dt/2021-10-10 sn/A1234567Z |
| Delete Tutorial Group Attendance | deleteatall tg/TUTORIAL_GROUP dt/DATEe.g., deleteatall tg/G17 dt/2021-10-10 |
| Get Attendance | getat n/NAME dt/DATE [sn/STUDENT_NUMBER]e.g., getat n/John Doe dt/2021-10-10 sn/A1234567Z |
| Get Tutorial Group Attendance | getattg tg/TUTORIAL_GROUPe.g., getattg tg/G17 |
| Close All Tutorial Group Attendance Windows | closeat |
| Add Assignment | adda n/NAME a/ASSIGNMENT_NAME d/DEADLINE [s/SUBMISSION_STATUS] [g/GRADE] [sn/STUDENT_NUMBER]e.g., adda n/John Doe a/Assignment 1 d/2021-10-10 s/N g/100 sn/A1234567Z |
| Delete Assignment | deletea n/NAME a/ASSIGNMENT_NAME [sn/STUDENT_NUMBER]e.g., deletea n/John Doe a/Assignment 1 sn/A1234567Z |
| Edit Assignment | edita n/NAME a/ASSIGNMENT_NAME [d/DEADLINE] [s/SUBMISSION_STATUS] [g/GRADE]e.g., edita n/John Doe a/Assignment 1 d/2021-10-10 s/Y g/90 |
| Add Assignment to Tutorial Group | addatg tg/TUTORIAL_GROUP a/ASSIGNMENT_NAME d/DEADLINE e.g., addatg tg/T15 a/Assignment 1 d/2021-10-10 |