UGTeach is a desktop app for managing your students' contacts that aims to empower Singapore-based undergraduate private tutors to efficiently manage payments and organize schedules. It streamlines tutoring operations and ensures you stay organized.
Whether you're a Command Line Interface (CLI) pro or new to command lines, we've got you covered. Our app offers both a CLI interface for advanced users and a GUI for those who prefer a more visual experience. If you can type fast, UGTeach can get your contact management tasks done faster than traditional GUI apps.
Ensure you have Java 17 or above installed in your Computer.
To check if you have Java installed, open a command terminal:
cmd.terminal.In the terminal, type java -version.
Look for a line that starts with java version. You should see a number, like 17.0.2. Ensure that this version number is 17 or higher.
If Java is not installed or the version is below 17, visit the official Java download page and install the latest version. Choose the appropriate download link for your operating system (Linux, or Windows).
For Mac users, you should install this specific Azul JDK 17 distribution by following this guide.
Download the latest .jar File:
.jar file from here.Copy the file to the folder you want to use as the home folder for UGTeach.
Before you run the application for the first time, ensure that your home folder does not contain a config.json and preferences.json file. If it does, delete them.
Open a command terminal, cd into the folder that you put the .jar file in.
.jar file is still in the Downloads folder, type cd DownloadsUse the java -jar ugteach.jar command to run the application.
A GUI similar to the image shown 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.
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 t/Sunday-1000-1200 s/Geography r/100 paid/100 owed/0: Adds a contact named John Doe to the UGTeach data file.
delete 3 : Deletes the 3rd contact shown in the current list.
clear : Deletes all contacts.
exit : Exits the app.
Refer to the Features below for details of each command.
| Action | Format, Examples |
|---|---|
| Help : opens up the Help window | help |
| List : lists all students in UGTeach | list |
| Add : adds a student to UGTeach | add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS t/SCHEDULE s/SUBJECT r/RATE [paid/PAID_AMOUNT] [owed/OWED_AMOUNT] e.g., add n/James Ho p/82224444 e/jamesho@example.com a/123, Clementi Rd, 1234665 t/Monday-0800-1000 s/GP r/300 paid/300 |
| Edit : edits a student in UGTeach | edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [t/SCHEDULE] [s/SUBJECT] [r/RATE] [paid/PAID_AMOUNT] [owed/OWED_AMOUNT]e.g., edit 2 paid/1200.00 owed/0 |
| Delete : deletes a student in UGTeach | delete INDEXe.g., delete 3 |
| Find : finds students whose names contain any of the given keywords and their schedules contain any of the given days | find [n/KEYWORD [MORE_KEYWORDS]] [d/DAY [MORE_DAYS]]e.g., find n/Alex John d/Friday |
| Pay : updates amount paid by a student | pay INDEX hr/HOURS_PAIDe.g., pay 1 hr/2.5 |
| Owe : updates amount owed by a student | owe INDEX hr/HOURS_OWEDe.g., owe 1 hr/1.5 |
| Settle : updates amount paid and owed by student (used when the student repays an amount owed to you) | settle INDEX amount/AMOUNTe.g., settle 1 amount/500.00 |
| Income : shows total amount paid and owed by all students in UGTeach | income |
| Remind : reminds you of all your lessons scheduled for today | remind |
| Clear : clears all students from UGTeach | clear |
| Exit : exits from UGTeach | exit |
Words in UPPER_CASE are the parameters to be supplied by you.
e.g. in add n/NAME, NAME is a parameter which can be used as add n/John Doe.
Items in square brackets are optional.
e.g n/NAME [owed/OWED_AMOUNT] can be used as n/John Doe owed/100.00 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.
There should be at least one space between any two parameters, or between the command word and its parameters.
e.g. edit 1 n/Sean is acceptable, but edit 1n/Sean or edit1 n/Sean is not.
No two students can have both same NAME and PHONE_NUMBER, but different students may share a PHONE_NUMBER.
Reason: Siblings can use a parent's phone number as their PHONE_NUMBER.
For commands that do not take in parameters (such as help, list, remind, income, exit and clear), any extra text that comes after the command word will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
e.g. if the command specifies list help, it will be interpreted as list, as the extra text help is ignored.
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.
helpShows a message explaining how to access the help page.
Format: help
listShows a list of all students in UGTeach.
Format: list
addAdds a student to UGTeach.
Format: add n/NAME p/PHONE_NUMBER e/EMAIL a/ADDRESS t/SCHEDULE s/SUBJECT r/RATE [paid/PAID_AMOUNT] [owed/OWED_AMOUNT]
Example:
add n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 t/Sunday-1000-1200 s/Geography r/100 paid/100 owed/0Before (using an empty UGTeach): 
DAY_OF_THE_WEEK-START_TIME-END_TIME (strictly no space in between).
Monday Tuesday Wednesday Thursday Friday Saturday Sunday.HHmm.Reason: This constraint follows the convention set by Singapore's National Numbering Plan.
Reason for the maximum value: It is unlikely for an undergraduate tutor to have an hourly rate higher than $1000.00.
12.00, 0.0 or 7.
-0, -0.0, -0.00 are not allowed! UGTeach will behave weirdly if you enter these values.Economics Literature Music Biology Chemistry ScienceEnglish Chinese Malay Tamil Mathematics History Geography Physics or GP.
S/O John, you may work around it by replacing it with S O John or Son Of John, or any alternatives if you deem suitable.edit command.

editEdits an existing student in UGTeach.
Format: edit INDEX [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [a/ADDRESS] [r/RATE] [paid/PAID_AMOUNT] [owed/OWED_AMOUNT]
Examples:
edit 1 p/87438808 e/alexyeoh100@example.com edits the phone number and email address of the 1st student to be 87438808 and alexyeoh100@examnple.com respectively.
edit 2 paid/1200.00 owed/0 edits the paid amount of the 2nd student to be $1200.00 and edits the owed amount to be $0.00.
pay command,
owe command and settle command
for convenient ways to update the paid amount and owed amount.S/O John, you may work around it by replacing it with S O John or Son Of John, or any alternatives if you deem suitable.deleteDeletes the specified student from UGTeach.
Format: delete INDEX
Examples:
list followed by delete 2 deletes the 2nd student stored in UGTeach.find n/Bernice followed by delete 1 deletes the 1st student in the results of the find command.findFinds students whose names contain any of the given keywords and their schedules contain any of the given days.
Format: find [n/KEYWORD [MORE_KEYWORDS...]] [d/DAY [MORE_DAYS...]]
Examples:
find n/alex returns Alex Yeoh and Alex Tanfind n/Alex d/Friday returns Alex Tanfind n/Alex Bernice d/Wednesday Friday returns Bernice Yu andAlex TanOutput for find n/Alex Bernice d/Wednesday Friday: 
list).
find command will not be affected by the previous find command.alex will match Alexalex will not match Alexanderfind d/Friday n/Alex will return the same result as find n/Alex d/Fridayfind n/Alex Bernice d/Wednesday Friday returns Bernice Yu andAlex Tan because:
Alex Yeoh, Alex Tan and Bernice Yu matches one of keywords Alex or Bernice,Alex Tan and Bernice Yu has a tuition on Wednesady or Friday.oweRecords the tuition fee that the student is unable to pay immediately after the lesson.
When he/she pays the outstanding fees at a later time, you should use the settle command to settle the tuition fee owed by the student.
Format: owe INDEX hr/HOURS_OWED
Example:
owe 1 hr/1.5 updates the tuition fee owed by the 1st student in the list.owe command, you can use the edit command to fix the OWE_AMOUNT to your preference.settleSettles the amount owed by the student and adds it to the paid amount. To record payment which is not related to the owed amount, you may use the pay command.
Format: settle INDEX amount/AMOUNT
Example:
settle 1 amount/50.00payUpdates the amount of tuition fee paid by the specified student after a lesson.
Recording payment using the pay command does not update the owed amount. You should use the settle command to settle the tuition fee owed by the student after he/she pays the outstanding fees.
Format: pay INDEX hr/HOURS_PAID
Example:
pay 1 hr/2.5 updates the tuition amount paid by the 1st student in UGTeach.pay command, you can use the edit command to fix the PAID_AMOUNT to your preference.incomeShows the total amount of tuition fee that you have been paid, as well as the total amount that is owed.
Format: income
Examples:
income when all entries are listed gives the total tuition fee paid, as well as the total amount that is owed.find n/Alex followed by income shows total tuition fee paid, as well as the total amount that is owed, from
students whose name contains Alex.remindReminds you of all your lessons scheduled for today. UGTeach automatically reminds you when you launch it.
Format: remind
find command
to find your schedule for a specific day of the week.clearClears all data from the data file of UGTeach.
Format: clear
exitExits the program.
Format: exit
UGTeach data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
UGTeach data are saved automatically as a JSON file [JAR file location]/data/ugteach.json. Advanced users can update data directly by editing that data file, although not recommended.
If you are not fully comfortable with JSON formatting or unsure about the data constraints specified in this guide, we strongly advise against directly editing the data file.
However, if you choose to proceed, we recommend creating a backup (e.g., by copying the file to another location) to safeguard against potential errors.
Please note:
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 UGTeach 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.0 values (e.g. -0, -0.0, -0.00). UGTeach behaves weirdly if you enter these values, which is unlikely in daily use case. Be assured that UGTeach will behave normally if you enter 0, 0.0 or 0.00.3000000000, 4000000000, 1500000000). UGTeach behaves weirdly if you enter these values, which is unlikely in daily use case. Be assured that UGTeach will behave normally if you enter 1, 2, 3, assuming there are that many students in UGTeach.Ravi S/O Ramasamy, Devi D/O Rajaratnam. The workaround is to exclude the special characters. E.g. replace the S/O with s o or son of, likewise for D/O.a/.edit 1 a/n/Next Door will edit the first student's address to be n/Next Door, but edit 1 a/ at n/Next Door will edit the first student's address to be at, and edit the student's name to be Next Door.pay and owe commands can result in a minor difference of tuition fee based on the number of hours one session lasts. For example, with the rate of $100.01/hr, pay 1 hr/3 returns a payment $300.03, but typing pay 1 hr/1.5 twice returns $300.04 in total. However, this issue is less likely to impact tutors, as their hourly rates typically do not extend to two decimal places. Therefore, in most cases, the differences would be negligible.