User Guide
Track-O is a free desktop application built for freelance tutors in Singapore. You can use Track-O to manage your tutee’s information, schedule lessons, track their payments, and many other functions. This application uses a command line interface; this means that you operate the application by typing commands.
It is available for Ubuntu, Windows and macOS operating systems.
Table of Contents
- About
- Quick start
- Features
- Command summary
- FAQ
- Troubleshooting
- Glossary
About
This user guide explains how to use Track-O.
If you are new to Track-O, you can head over to our Quick Start section to learn the basic features.
For detailed information on each command, you can hop over to the Features section for an in-depth guide.
If you are an advanced user, you can view all the commands at a glance at the Command Summary section.
Quick start
Installation
-
Ensure you have Java
11or above installed in your Computer. You can download it here. -
Download the latest
Track-O.jarfrom here. -
Copy the file to the folder you want to use as the home folder to run Track-O.
-
Double-click the file to start the app. The GUI should appear in a few seconds as shown in the image below. Note how the app contains some sample data.
-
Refer to Setting up your first tutee to get started using Track-O.
If you need help with the start up process, visit our Troubleshooting section.
Application layout

The GUI of Track-O is divided mainly into 4 sections:
-
Menu Bar: Navigation buttons that you can click to exit Track-O or open up ahelpwindow containing a link to this User Guide. -
Tutee list: A scrollable panel that shows a numbered list of your tutees.- The index number of the tutee list is the number that is assigned to each tutee in the numbered list.
-
Command box: A text box where you can type in commands and hit the Enter key on your keyboard to execute them. -
Result panel: A scrollable panel that shows the result of the command that you have just executed.- Note that some commands such as
getwill show a particular tutee’s lessons in the form of a numbered list. Similar to the tutee list, the index number of a tutee’s lesson refers to the number assigned to each lesson in the numbered list.
- Note that some commands such as
Setting up your first tutee
This section provides a quick guide to adding your first tutee and carrying out your first lesson. For more information on each command, it can found under the Features section of our guide. To run a command, simply type the command in the command box and hit the Enter key on your keyboard.
Before your lesson
- Let’s clear the existing sample data first. Run
clearto remove the existing tutees. - To add in a new tutee, run
add n/John Tan l/p5 a/246 Hougang Ave sch/Rosyth School p/84567890. This will add in a tutee with the nameJohn Tan, aPrimary 5student fromRosyth School, staying at246 Hougang Avewhose phone number is84567890. - To add a lesson for this tutee, run
addlesson 1 subject/English d/7 s/14:00 e/16:00 rate/30. This will add anEnglishlesson fromSunday 2pm to 4pmwith the rate of$30per hour for John. - To state a payment receive date, run
payment 1 by/05-01-2022. This means that you expect to collect the fees on the 5th of January 2022. - Run
get 1. If you performed all the steps correctly, the application should look like this.

After your lesson
- To add in the fees of this lesson, run
payment 1 lesson/1. This will add in the total fees of the first lesson. Since the rate was$30per hour over 2 hours, the total adds up to$60.00. - To add in any remarks for the lesson, run
remark 1 r/Good Progress!and this set the commentsGood Progress!under John’s remarks. - If you have collected the fees for this lesson, run
payment 1 receive/and this resets the payment value to0.00, removes the pay-by date used in step 4 under Before your lesson, and updates John’s last paid date to today’s date. - Run
get 1. If you performed all the steps correctly, the application should look like this.

Features
This section covers the various features of Track-O.
Our main features includes storing the information of tutees, scheduling lessons and managing payments of tutees.
Notes about the command format:
-
Words in
UPPER_CASEare the parameters to be supplied by you.
e.g. inadd 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/friendor asn/John Doe. -
Items with
…after them can be used multiple times.
e.g.[t/TAG]…tags are optional can be added multiple times:t/friend,t/friend t/familyetc.
e.g.[subject/SUBJECT…]subject keywords are optional and allows multiple keyword search:subject/English Math Science -
Parameters can be in any order.
e.g. if the command specifiesn/NAME p/PHONE_NUMBER,p/PHONE_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 specifyp/12341234 p/56785678, onlyp/56785678will be taken. -
Extraneous parameters for commands that do not take in parameters (such as
help,list,schedule,exitandclear) will be ignored.
e.g. if the command specifieshelp 123, it will be interpreted ashelp.
Viewing help : help
Shows a message explaining how to access the help page.
Format: help
Managing tutee’s information
Adding a tutee: add
Adds a tutee to the existing list of tutees.

Format: add n/NAME p/PHONE sch/SCHOOL l/LEVEL a/ADDRESS [t/TAG]…
-
n/NAMEand[t/TAG]can only take in alphanumeric characters and spaces. -
p/PHONEshould only take in 8-digit phone numbers. -
l/LEVELshould only take inp1top6,s1tos5,j1toj2.
Examples:
add n/John Doe p/93456789 sch/Temasek Jc l/j2 a/135 Rivervale Linkadd n/Betsy Crowe l/p5 a/246 Hougang Ave 6 sch/Rosyth p/84567890 t/Northeast region
Deleting a tutee : delete
Deletes the specified tutee from our list of tutees.

Format: delete INDEX
- Deletes the tutee at the specified
INDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
Examples:
-
delete 2deletes the 2nd tutee in the tutee list.
Editing a tutee : edit
Edits an existing tutee in the tutee list.

Format: edit INDEX [n/NAME] [p/PHONE] [sch/SCHOOL] [l/LEVEL] [a/ADDRESS] [t/TAG]…
- Edits the tutee at the specified
INDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
- At least one of the optional fields must be provided.
-
n/NAMEand[t/TAG]can only take in alphanumeric characters and spaces. -
p/PHONEshould only take in 8-digit phone numbers. -
l/LEVELshould only take inp1top6,s1tos5,j1toj2. - Existing values will be updated to the input values while all other values without input values remains unchanged.
- When editing tags, the existing tags of the tutee will be removed i.e adding of tags is not cumulative.
- You can remove all the tutee’s tags by typing
t/without specifying any tags after it.
Examples:
-
edit 1 p/91234567 a/345 Bedok North Ave 3Edits the phone number and address of the 1st tutee to be91234567and345 Bedok North Ave 3respectively. -
edit 2 n/Betty Chan t/Edits the name of the 2nd tutee to beBetty Chanand clears all existing tags.
Finding tutee by fields : find
Filters the tutee list to display matches according to keywords.

Format: find [n/NAME…] [subject/SUBJECT…] [l/LEVEL] [overdue/OVERDUE_STATUS]
- At least one of the optional filters must be provided.
- Keywords are case-insensitive.
- The returned tutee list contains matches that fulfills all the filters. If the filter has multiple keywords, only tutees which fulfills all keywords will be returned.
-
namefilter can take multiple keywords to be matched and can only be alphanumeric characters. -
subjectfilter can take multiple keywords to be matched and can only be alphanumeric characters. -
levelfilter can only take 1 keyword in the form of abbreviation.
e.g.p5for Primary 5,s2for Secondary 2 -
overduefilter can only take 1 keyword, eitheryesorno.
Example:
- Find all tutees with name containing
Davidin the tutee list:find n/david. - Find all tutees with name containing
DavidandLeein the tutee list:find n/david lee. - Find all tutees of level
Secondary 4:find l/s4. - Find all tutees taking
mathandphysicsclasses:find subject/math physics. - Find all tutees taking
mathclasses with fees overdue:find subject/math overdue/yes.
Listing all tutees : list
Shows the full list of tutees stored.
Format: list
Get tutee’s information : get
Gets the details of a specified tutee from the tutee list.

Format: get INDEX
- Gets the tutee at the specified
INDEXin the formatName: John Doe Level: P5 - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
Examples:
-
listfollowed byget 2shows the 2nd tutee in the tutee list.
Managing Remarks
Adding a remark to a tutee: remark
Adds a remark to the specified tutee with the provided TEXT input. New remarks will be appended to existing ones on
a new line and will not overwrite them.

Format: remark INDEX r/TEXT
- Adds the desired
TEXTto the tutee specified at the specifiedINDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
- Empty remarks and remarks with whitespaces allow you to skip lines when appending.
Examples:
remark 1 r/Went through Organic Chemistry
Clearing all remarks of a tutee: clearremark
Clears all remarks of the specified tutee.

Format: clearremark INDEX
- Clears all remarks of the tutee specified at the specified
INDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
Examples:
clearremark 1
Managing Lessons
Tracking lesson schedule : schedule
Retrieves your lesson schedule.

Format: schedule
Adding a lesson to a tutee : addlesson
Adds a lesson to the specified tutee and your current schedule.

Format: addlesson INDEX subject/SUBJECT d/DAY_OF_WEEK s/START_TIME e/END_TIME rate/HOURLY_RATE
- Adds a lesson to the tutee at the specified
INDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
- The lesson occurs on the specified
DAY_OF_WEEK, from the specifiedSTART_TIMEto the specifiedEND_TIME, costingHOURLY_RATEdollars per hour. -
DAY_OF_WEEKmust be an integer in the range [1, 7] where1to7corresponds to Monday to Sunday. -
START_TIMEandEND_TIMEmust be specified in anHH:MMformat. - The supported duration for a lesson is 30 min — 23 h 59 min
-
START_TIMEandEND_TIMEshould be within the same day. -
HOURLY_RATEmust be a positive number expressed in either zero decimal places or two decimal places with the last decimal place (i.e. last digit) being0or5. -
HOURLY_RATEshould not have a fee greater than$1000. - The lesson to be added must not clash with any of the lessons in your schedule.
Examples:
addlesson 1 subject/Biology d/7 s/11:30 e/13:30 rate/40.50addlesson 2 subject/Math d/5 s/19:30 e/21:30 rate/40.75addlesson 3 subject/Chemistry d/7 s/08:30 e/09:45 rate/40
Deleting a lesson from a tutee : deletelesson
Deletes an existing lesson from your tutee and from your schedule.

Format: deletelesson TUTEE_INDEX lesson/LESSON_INDEX
- The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
- The lesson index is the number displayed beside the subject name after using
getcommand on the tutee. -
TUTEE_INDEXandLESSON_INDEXare compulsory fields, an error message is produced if either one is missing.
Examples:
- Deleting lesson 2 from tutee 3:
deletelesson 3 lesson/2 - Deleting lesson 3 from tutee 1:
deletelesson 1 lesson/3
Tracking Payments
Entering payment shows you all the payment-related commands available.
Note that Track-O keeps track of fees up to $100,000, any payment command that results in the fees exceeding the amount will return an error.
Retrieve payment details from tutee: payment
Format: payment INDEX

- Retrieves the payment details of the tutee at the specified
INDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
Examples:
payment 1
Adding lesson’s fees to a tutee: … lesson
Format: payment INDEX lesson/LESSON_INDEX

- Adds the fees of the specified lesson at
LESSON_INDEXto the specified tutee’s payment details atINDEX. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
-
LESSON_INDEXmust be within the size of the tutee’s lesson list and must be a positive integer 1, 2, 3, … - If the payment amount exceeds $100,000 after adding the lesson fees, Track-O returns an error message.
Examples:
payment 1 lesson/1payment 1 lesson/2
Editing a tutee’s payment amount: … amount
Format: payment INDEX amount/AMOUNT

- Changes the payment amount due by the specified tutee at
INDEXtoAMOUNT. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
-
AMOUNTmust be from 0 to 100,000 expressed in either zero decimal places or two decimal places with the last decimal place (i.e. last digit) being0or5.
Examples:
payment 1 amount/0payment 1 amount/80.50payment 2 amount/100
Setting a tutee’s payment due date: … by
Format: payment INDEX by/DUE_DATE

- Changes the payment due date of the specified tutee at
INDEXtoDUE_DATE. - The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
-
DUE_DATEmust be later than or on the current date expressed in thedd-MM-YYYYformat.
Examples:
payment 1 by/25-12-2021payment 2 by/01-01-2022
Receiving a tutee’s payment (and setting a next payment due date): … receive
Format: payment INDEX receive/[DUE_DATE]

- Resets the payment amount due of the specified tutee to
0. - Resets the payment due date of the specified tutee at
INDEXto-, orDUE_DATEif specified. - Updates the specified tutee’s last paid date in their payment details to the current date.
- The index refers to the index number tagged to each tutee in the currently displayed tutee list.
- The index must be within the size of the displayed tutee list and must be a positive integer 1, 2, 3, …
-
DUE_DATEmust be later than or on the current date expressed in thedd-MM-YYYYformat, if specified.
Examples:
payment 1 receive/payment 2 receive/01-01-2022
Clearing all entries : clear
Clears the tutee list and your schedule.

Format: clear
Exiting application : exit
Exits from the application.
Format: exit
Command summary
| Action | Format, Examples |
|---|---|
| Help | help |
| Add tutee |
add n/NAME p/PHONE sch/SCHOOL l/LEVEL a/ADDRESS [t/TAG]… e.g. add n/James Ho p/87652345 sch/Anderson sec l/s4 a/200 Yio Chu Kang Road
|
| Delete tutee |
delete INDEXe.g. delete 3
|
| Edit tutee |
edit INDEX [n/NAME] [p/PHONE] [sch/SCHOOL] [l/LEVEL] [a/ADDRESS] [t/TAG]… e.g. edit 2 sch/Victoria Jc l/j1
|
| Find tutee |
find [n/NAME…] [l/LEVEL] [subject/SUBJECT…] [overdue/OVERDUE]e.g find n/david subject/math
|
| List all tutees | list |
| Get tutee information |
get INDEXe.g. get 2
|
| Add remark |
remark INDEX r/TEXT e.g remark 1 r/Good progress.
|
| Clear remarks |
clearremark INDEX e.g clearremark 1
|
| View schedule | schedule |
| Add lesson to tutee |
addlesson INDEX subject/SUBJECT d/DAY_OF_WEEK s/START_TIME e/END_TIME rate/HOURLY_RATE e.g addlesson 1 subject/Biology d/4 s/11:30 e/13:30 rate/40.50
|
| Delete Lesson from tutee |
deletelesson TUTEE_INDEX lesson/LESSON_INDEXe.g deletelesson 2 lesson/1
|
| View payment details |
payment INDEX e.g payment 1
|
| Add payment due |
payment INDEX lesson/LESSON_INDEX e.g payment 1 lesson/1
|
| Edit payment due |
payment INDEX amount/AMOUNT e.g payment 1 amount/80.50
|
| Set payment date |
payment INDEX by/DUE_DATE e.g payment 1 by/01-01-2022
|
| Receive payment |
payment INDEX receive/[DUE_DATE] e.g payment 1 receive/01-02-2022
|
| Clear | clear |
| Exit | exit |
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 Track-O home folder (tracko.json).
Q: I opened my application and all my data is gone! What do I do?
A: The data is most likely corrupted. If you are familiar with how to edit json files, you may open your tracko.json file to make the necessary edits. Otherwise, you would have to delete the existing tracko.json file and start afresh.
Q: Why does my application look slightly different?
A: The screenshots in this User Guide are from an application running on macOS. If you are using Windows, your application would look something like this instead:

It is just a visual difference. Both applications have the same functionalities otherwise.
Q: What are tags used for?
A: Tags can be used to indicate important details of the tutee that you would like to see straight from the tuteelist. For instance, in the sample data provided, tags were used to indicate important upcoming examinations for tutees such as PSLE.
Q: What does it mean by a lesson clashing with other lessons in the user’s schedule under the section on adding a lesson to a tutee? Why is it not allowed?
A: A schedule clash means that the lesson added coincides with another lesson in the existing schedule. To resolve this, pick a different day/timing where your schedule is free.
Q: Why doesn’t pressing F1 open the Help menu on my Mac?
A: Try pressing Fn + F1 (The Function and the F1 key together) instead. This is due to how macOS handles function keys.
Troubleshooting
Installing Java 11
If you do not have Java 11 installed and are unsure of which version to download, refer to the follow steps:
- Visit the Oracle website here.
-
Scroll down until you see Java SE Development Kit 11.0.13. You should see something similar to the image below.

- Click on Java 11.
- Select your own Operating System. You may check your computer’s System Information for more details.
- Download the respective file. (You may need to register for an Oracle account)
- For macOS users, download the file that ends with .dmg.
- For Windows users, download the file that ends with .exe.
- For Linux users, follow the instructions here to download Java 11.
- For macOS and Windows users, once the .dmg or .exe file has been installed, double-click the file and follow the instructions provided to complete the installation.
Installing Track-O (macOS)
For macOS users, you may receive an error similar to the one below when double-clicking tracko.jar for the first time.
Refer to the following steps to get started using Track-O:
- Click on the “OK” to close the pop-up window.
- Run Spotlight by pressing the Command key and Space Bar at the same time.
-
Type “Security & Privacy” and hit Enter. You should see a window similar to the one below:
-
Click on “Open Anyway” and a new window similar to the one below will pop up.
- Click on “Open” and Track-O will start.
Glossary
| Terms | Explanation |
|---|---|
| operating system | The system software that manages computer hardware. |
| command | The text that you enter in the command box. Different commands have different formats. |
| prefix | A word or letter that ends with /. It is a shorthand notation that is used to specify the fields involved in a command. e.g. n/ indicates that a name is involved. |
| parameter | A value that is defined based on your input and is immediately preceded by a prefix. e.g. Given a p/ prefix which represents a phone number, followed by a PHONE parameter; if you input 98765432 in place of the PHONE parameter, the phone number holds a value of 98765432. |
| alphanumeric characters | Words that consist of only English alphabets and/or numbers, e.g. 2km. Characters such as @, ? and % are not alphanumeric. |
| integer | A number that has no decimal places or fractions. |
| level | Refers to the education level of a student in the context of Singapore’s education system. |