KeyContacts allows you to
KeyContacts is optimized for use via keyboard commands while still being aesthetically pleasing and easy to use. If you type fast, you can complete your contact management tasks much faster with KeyContacts than with mouse-based apps.
17 or above installed in your Computer.
keycontacts.jar file from our releases page here.
keycontacts.jar.Open a command terminal of your preference (e.g. Command Prompt on Windows, Terminal on Mac) from your home folder.
Open in Terminal.Services, then New Terminal at Folder.Run the command: java -jar keycontacts.jar.
You will see the app appear, filled with sample data:
Type a command in the command box and press Enter to execute it.
Example: Typing help and pressing Enter will open the help window.
Some example commands you can try:
list : Lists all students.add n/John Doe p/98765432 a/John street, block 123, #01-01 gl/ABRSM 3 : Adds a student named John Doe to the student directory.schedule 2 d/mon st/08:00 et/10:00 : Schedules a weekly recurring lesson for the 2nd student on Monday from 8am to 10am.delete 3 : Deletes the 3rd student shown in the current list.clear : Deletes all students.undo : Undoes the last update to the student directory.exit : Exits the app.Tip:
Refer to the Command Summary for a table containing the full list of commands.
The commands you can use in KeyContacts are split into 3 different types:
Let's walk you through some basics of the command format.
Each command consists of a command word, and zero or more parameters.
Words in UPPER_CASE are the parameters to be supplied by you.
Example: In add n/NAME, NAME is a parameter which can be used as add n/John Doe.
The parameter INDEX (e.g. in the command format delete INDEX) specifies the student to perform the operation on.
INDEX refers to the index number shown in the displayed student list (at the top left of each student card). INDEX must be a positive integer, i.e. 1, 2, 3...
Parameters in square brackets are optional.
Example: [g/GROUP] can be omitted or used as g/Group One.
Parameters with … after them can be used multiple times.
Example: pn/PIECE… can be used as pn/Moonlight Sonata, pn/Moonlight Sonata pn/Ode to Joy etc.
Parameters can be in any order (excluding INDEX, which must follow the command word).
Example: 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 (i.e help, list, undo, redo, exit and clear) will be ignored.
Example: If the command specifies help 123, it will be interpreted as help.
Caution:
If you are using a PDF version of this document, be careful when copying and pasting commands that span multiple lines. This is because some space characters surrounding line-breaks may be omitted when copied over.
A student has a name, phone number, address, grade level and optionally, a group.
Students with
the same group name (case-insensitive) will have synced lessons.
Note:
Students with the same name (case-insensitive) and phone number will be counted as duplicate students.
| Action | Format, Examples |
|---|---|
| Add | add n/NAME p/PHONE_NUMBER a/ADDRESS gl/GRADE_LEVEL [g/GROUP] e.g. add n/James Ho p/22224444 a/123, Clementi Rd, 1234665 gl/LCM 1 |
| Delete | delete INDEXe.g. delete 3 |
| Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS] [gl/GRADE_LEVEL] [g/GROUP]e.g. edit 2 n/James Lee p/81234567 |
| Assign | assign INDEX pn/PIECE_NAME...e.g. assign 1 pn/Moonlight Sonata pn/Canon in D |
| Unassign | unassign INDEX [pn/PIECE_NAME]...e.g. unassign 1 pn/Moonlight Sonata pn/Canon in D |
addAdds a student to the student directory.
Format: add n/NAME p/PHONE_NUMBER a/ADDRESS gl/GRADE_LEVEL [g/GROUP]
g/), the student will not be assigned to any group.Examples:
add n/John Doe p/98765432 a/John street, block 123, #01-01 gl/LCM 1 adds a student named John Doe with phone number 98765432, address John Street, block 123, #01-01, grade level LCM 1, and no group.add n/Mary Sue p/87654321 a/Mary avenue, block 51, #10-10 gl/ABRSM 1 g/Jack's Group adds a student named Mary Sue with phone number 87654321, address Mary avenue, block 51, #10-10, grade level ABRSM 1 and group Jack's Group. Mary Sue will have Jack's Group's lessons.Tip:
Does the app keep telling you that you are trying to insert a duplicate student? Check that you are not entering a student that already exists in the directory! See our definition of duplicate students here.
deleteDeletes the specified student from the student directory.
Format: delete INDEX
INDEX.Examples:
delete 2 deletes the 2nd student.Tip:
If you accidentally deleted the wrong student, you can use the undo command to revert your action.
editEdits an existing student in the student directory.
Format: edit INDEX [n/NAME] [p/PHONE] [a/ADDRESS] [gl/GRADE_LEVEL] [g/GROUP]
INDEX.g/), the student will be removed from any existing group.Examples:
edit 1 n/Jane Doe p/91234567 edits the name and phone number of the 1st student to be Jane Doe and 91234567 respectively.edit 1 n/Penelope g/ removes the 1st student from their group, while also editing their name to be Penelope.edit 2 g/Jack's Group moves the 2nd student into the group Jack's Group. The 2nd student will also be updated to have Jack's Group's lessons.assignAssigns piano pieces to a student in the student directory.
Format: assign INDEX pn/PIECE_NAME...
INDEX.Examples:
assign 1 pn/Etude pn/Moonlight Sonata adds Etude and Moonlight Sonata to the 1st student's piano pieces.unassignUnassigns piano pieces from a student in the student directory.
Format: unassign INDEX [pn/PIECE_NAME]...
INDEX.Examples:
unassign 1 pn/Etude pn/Moonlight Sonata removes Etude and Moonlight Sonata from the 1st student's piano pieces.unassign 2 clears all the 2nd student's piano pieces.
Each student can have one regular lesson in the same timeslot every week. You can also create make-up lessons and cancel lessons for each student.
Note:
We mentioned earlier that students in the same group have synced lessons. So, all commands in this section will apply to the entire group of the targeted student.
Tip:
Our app helps prevent scheduling mishaps by not allowing overlapping lessons. If you try to schedule clashing lessons, we’ll catch it and notify you right away!
Listed below are the currently supported lesson commands.
| Action | Format, Examples |
|---|---|
| Schedule | schedule INDEX d/DAY st/START_TIME et/END_TIMEe.g. schedule 1 d/Monday st/12:00 et/14:00 |
| Makeup | makeup INDEX dt/DATE st/START_TIME et/END_TIMEe.g. makeup 1 dt/25-12-2022 st/12:00 et/14:00 |
| Cancel | cancel INDEX dt/DATE st/START_TIME e.g. cancel 1 dt/14-10-2024 st/12:00 |
| Uncancel | uncancel INDEX dt/DATE e.g. uncancel 1 dt/14-10-2024 |
scheduleSchedules a weekly recurring regular lesson for the specified student in the student directory.
Format: schedule INDEX d/DAY st/START_TIME et/END_TIME
INDEX.DAY must be a day of the week (e.g. Monday, Tuesday etc.) or its 3-letter abbreviation (e.g. Mon, Tue etc.). This parameter is case-insensitive.START_TIME and END_TIME must be in 24-hour format (HH:MM), and START_TIME must be before END_TIME.Example:
schedule 1 d/Tuesday st/16:00 et/18:00 schedules a regular lesson every Tuesday, 4-6pm for the 1st student.makeupSchedules a makeup lesson for the specified student in the student directory.
Format: makeup INDEX dt/DATE st/START_TIME et/END_TIME
INDEX. The index refers to the index number shown in the displayed student list. The index must be a positive integer 1, 2, 3, …DATE must be a valid date in the format DD-MM-YYYY.START_TIME and END_TIME must be in 24-hour format (HH:MM) and START_TIME must be before END_TIME.Examples:
makeup 1 dt/25-12-2024 st/12:00 et/14:00 schedules a makeup lesson on 25th December 2024, 12-2pm for the 1st student.cancelCancels a lesson for the specified student in the student directory.
Format: cancel INDEX dt/DATE st/START_TIME
INDEX, on the specified DATE that starts at the specified START_TIME.DATE must be a valid date in the format DD-MM-YYYY.DATE must match the student's lesson DATE, and START_TIME must match the student's lesson START_TIME.START_TIME must be in 24-hour format (HH:MM).Example:
cancel 1 dt/15-10-2024 st/16:00 cancels a lesson on 15th Oct 2024, starting at 4pm for the 1st student.Note:
The cancel command supports cancelling both regular and makeup lessons!
Cancelled makeup lessons will be removed, while cancelled regular lessons appear as a list of dates in the student card.
uncancelUncancels a cancelled lesson for the specified student in the student directory.
Format: uncancel INDEX dt/DATE
INDEX.DATE must be a valid date in the format DD-MM-YYYY.DATE must match the student's cancelled lesson DATE.Example:
uncancel 1 dt/20-10-2024 uncancels a regular lesson on 20th Oct 2024 for the 1st student.Tip:
The uncancel command only supports uncancelling of regular lessons. To uncancel a makeup lesson, simply reschedule it with the makeup command.
Listed below are the currently supported general commands.
| Action | Format, Examples |
|---|---|
| Help | help |
| List | list |
| View | view [dt/DATE]e.g. view dt/01-10-2024 |
| Find | find [n/NAME_KEYWORD] [p/PHONE_KEYWORD] [a/ADDRESS_KEYWORD] [gl/GRADE_LEVEL_KEYWORD] [g/GROUP_KEYWORD]e.g. find n/James gl/ABRSM |
| Sort | sort [n/ASC or DESC] [p/ASC or DESC] [a/ASC or DESC] [gl/ASC or DESC] [g/ASC or DESC]e.g. sort g/ASC n/DESC |
| Clear | clear |
| Undo | undo |
| Redo | redo |
| Exit | exit |
helpShows a message explaining how to access the help page.
Format: help
listShows a list of all students in the student directory.
Format: list
viewDisplays the lesson schedule for the specified week.
Format: view [dt/DATE]
DATE must be in the format DD-MM-YYYY.Examples:
view displays the schedule for the current week.view dt/01-11-2024 displays the schedule for 28 Oct 2024 (Monday) to 3 Nov 2024 (Sunday).Note:
The schedule will exclude lessons that are cancelled for that week.
findFinds students whose personal details match inputs.
Format: find [n/NAME_KEYWORD] [p/PHONE_KEYWORD] [a/ADDRESS_KEYWORD] [gl/GRADE_LEVEL_KEYWORD] [g/GROUP_KEYWORD]
hans will match Hans.ng will match huang.AND search).
e.g. n/Hans p/98765432 will return Hans Gruber; 98765432, but not Hans Goretzka; 12345678.Examples:
find n/John returns all students with John in their name, such as john and Johnny Doe.find n/will p/8765 returns all students with will in their name and phone number containing 8765, such as william; 87654321 but not will; 12341234.Tip:
You can use the list command to clear the previous find results and display all students again!
sortSorts students based on personal details.
Format: sort [n/ASC or DESC] [p/ASC or DESC] [a/ASC or DESC] [gl/ASC or DESC] [g/ASC or DESC]
ASC (ascending) or DESC (descending), and is case-insensitive.To clear the sorting conditions, use the command sort clear.
Examples:
sort n/ASC sorts the students by name in ascending order.sort gl/DESC n/ASC sorts the students by grade level in descending order, and tie-breaks using name in ascending order.Note:
All sorting is performed in ASCII order, meaning lower-cased letters come after all upper-cased letters.
e.g "A" comes before "B", but "a" comes after "B".
clearClears all entries from the student directory.
Format: clear
Tip:
Accidentally used the clear command? No need to worry! You can use the undo command to revert your action!
Do NOT exit out of the application before you undo, as you will lose your data permanently.
undoUndoes the last command that modified the student directory.
Format: undo
Note:
Undo only affects commands that modify student entries.
For example, if you ran the command delete 1 to delete student Alex Yeo, followed by the command find Bernice, running undo will restore student Alex Yeo.
You can undo multiple commands in a row that modified the student directory.
redoRestores any changes that were previously undone using the undo command.
Format: redo
Note:
If you make another change to student entries after an undo command, you can no longer revert that undo command.
For example, if you ran delete 2, then undo, then delete 1, you can no longer redo the delete 2 command.
You can redo multiple changes in a row.
exitExits the program.
Format: exit
How do I save my data?
Student directory data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
Help, why does it keep telling me that my date needs to be a valid date?
Firstly, make sure that your date exists (take note of the 29th of February on non-leap years).
Next, make sure that your date is following the DD-MM-YYYY format (pay attention to the hyphens in between).
Example: 30-10-2024 is allowed, while 30/10/2024 is not allowed.
Can I edit the saved data file manually?
Student directory data is saved automatically as a JSON file at [JAR file location]/data/studentdirectory.json.
Advanced users are welcome to update data directly by editing that data file.
How do I transfer my data to another computer?
You can do so by copying the data file over to the other computer as follows:
studentdirectory.json file in the data folder over to the other computer.data folder containing a sample studentdirectory.json file.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.| Action | Format, Examples |
|---|---|
| Add | add n/NAME p/PHONE_NUMBER a/ADDRESS gl/GRADE_LEVEL [g/GROUP] e.g. add n/James Ho p/22224444 a/123, Clementi Rd, 1234665 gl/LCM 1 |
| Delete | delete INDEXe.g. delete 3 |
| Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [a/ADDRESS] [gl/GRADE_LEVEL] [g/GROUP]e.g. edit 2 n/James Lee p/81234567 |
| Assign | assign INDEX pn/PIECE_NAME...e.g. assign 1 pn/Moonlight Sonata pn/Canon in D |
| Unassign | unassign INDEX [pn/PIECE_NAME]...e.g. unassign 1 pn/Moonlight Sonata pn/Canon in D |
| Schedule | schedule INDEX d/DAY st/START_TIME et/END_TIMEe.g. schedule 1 d/Monday st/12:00 et/14:00 |
| Makeup | makeup INDEX dt/DATE st/START_TIME et/END_TIMEe.g. makeup 1 d/25-12-2022 st/12:00 et/14:00 |
| Cancel | cancel INDEX dt/DATE st/START_TIME e.g. cancel 1 dt/14-10-2024 st/12:00 |
| Uncancel | uncancel INDEX dt/DATE e.g. uncancel 1 dt/14-10-2024 |
| Help | help |
| List | list |
| View | view [dt/DATE]e.g. view dt/01-10-2024 |
| Find | find [n/NAME_KEYWORD] [p/PHONE_KEYWORD] [a/ADDRESS_KEYWORD] [gl/GRADE_LEVEL_KEYWORD] [g/GROUP_KEYWORD]e.g. find n/James gl/ABRSM |
| Sort | sort [n/ASC or DESC] [p/ASC or DESC] [a/ASC or DESC] [gl/ASC or DESC] [g/ASC or DESC]e.g. sort g/ASC n/DESC |
| Clear | clear |
| Undo | undo |
| Redo | redo |
| Exit | exit |