User Guide
Prof-iler is a desktop app for managing student research records, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). Designed for fast typing research professors at SoC, Prof-iler helps streamline research management by organizing, tracking, and maintaining student records over time. These tasks can be done faster than traditional GUI apps.
- Quick start
-
Features
- Changing Theme
- Viewing help :
help
- Adding a student:
add
- Listing all students :
list
- Editing a student :
edit
- Editing the progress :
progress
- Entering log for a student:
log
- Locating students by name:
find
- Filter for specific projects:
filter
- Sorting based on progress:
sort
- Deleting students :
delete
- Clearing all entries :
clear
- Exiting the program :
exit
- Saving the data
- Editing the data file
- FAQ
- Known issues
- Command summary
- Glossary
Quick start
-
Ensure you have Java
17
or above installed in your Computer.
Mac users: Ensure you have the precise JDK version prescribed here. -
Copy the file to the folder you want to use as the home folder for your Prof-iler application.
-
Open a command terminal,
cd
into the folder you put the jar file in, and use thejava -jar Prof-iler.jar
command to run the application.
A 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
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 id/A0253517M e/johnd@example.com pr/Prof-iler pb/72 t/Y3
: Adds a student namedJohn Doe
to Prof-iler -
delete 3
: Deletes the 3rd student shown in the current list. -
clear
: 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_CASE
are the parameters to be supplied by the user.
e.g. inadd n/NAME
,NAME
is a parameter which can be used asadd n/John Doe
. -
Items in square brackets are optional.
e.g.n/NAME [t/TAG]
can be used asn/John Doe t/Y4
or asn/John Doe
. -
Items with
…
after them can be used multiple times including zero times.
e.g.[t/TAG]…
can be used ast/Y4
,t/CS t/Y4
etc.
e.g.pr/KEYWORD...
can be used aspr/Prof-iler
pr/Project Prof-iler
(i.e. 1 time),pr/Project Orbital Apollo
(i.e. 2 times). -
Parameters can be in any order.
e.g. if the command specifiesn/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
andclear
) will be ignored.
e.g. if the command specifieshelp 123
, it will be interpreted ashelp
. -
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.
Changing Theme
Clicking ‘Theme’ shows a drop-down box with options Dark and Light. A GUI similar to the below should appear on clicking Light.
Viewing help : help
Shows a link to the user guide and a list of all commands available in Prof-iler.
Format: help
, can also be accessed via F1
function key
Adding a student: add
Adds a student to Prof-iler.
Format: add n/NAME id/STUDENT_ID p/PHONE e/EMAIL pr/PROJECT [pb/PROGRESS] [t/TAG]…
- All included fields must not be blank.
-
NAME
should only contain alphanumeric characters and spaces. -
STUDENT_ID
is unique, should start withA
ora
, followed by 7 digits, and end with a letter. -
PHONE
should only contain numbers, and it should be 3 - 15 digits long. -
EMAIL
should be of the formatlocal-part@domain
and adhere to the following constraints:- The local-part should only contain alphanumeric characters and the special characters
+_.-
. - The local-part may not start or end with any special characters.
- The local-part may not contain consecutive special characters.
- This is followed by
@
and then a domain name. - The domain name is made up of domain labels separated by periods, and must:
- end with a domain label at least 2 characters long,
- have each domain label start and end with alphanumeric characters,
- have each domain label consist of alphanumeric characters, separated only by hyphens (non-consecutive), if any.
- A top-level domain (e.g.
.com
) is optional.
- The local-part should only contain alphanumeric characters and the special characters
-
PROJECT
can be any value. -
PROGRESS
should be a whole number between 0 and 100. - Each
TAG
should be alphanumeric, contain no spaces and is case-sensitive (e.g.cs
andCs
are counted as two different tags).

A student can have any number of tags (including 0).
A student can have unmentioned progress (default = 0).
Duplicate students are detected by the same
STUDENT_ID
.
Examples:
add n/John Doe id/A0253517M p/98765432 e/johnd@example.com pr/Project Prof-iler
add n/Betsy Crowe t/Y4 id/A0055729D e/betsycrowe@example.com p/1234567 pr/Orbital
Listing all students : list
Shows a list of all students in Prof-iler.
Format: list
Editing a student : edit
Edits an existing student in Prof-iler.
Format: edit INDEX [n/NAME] [id/STUDENT_ID] [p/PHONE] [e/EMAIL] [pr/PROJECT] [pb/PROGRESS] [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.
Examples:
-
edit 1 p/91234567 e/johndoe@example.com
Edits the phone number and email address of the 1st student to be91234567
andjohndoe@example.com
respectively. -
edit 2 n/Betsy Crower t/
Edits the name of the 2nd student to beBetsy Crower
and clears all existing tags.
Editing the progress : progress
Edits the progress of an existing student in Prof-iler.
Format: progress INDEX pb/PROGRESS
- 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, …
- Existing progress will be updated to the input progress.
Example:
-
progress 1 pb/45
Edits the progress of the 1st student to be45
.
Entering log for a student: log
Adds log for the student whose index is specified.
Format: log INDEX l/LOG
- Adds a log to the student at the specified
INDEX
. - Student can only have one log at a time.
- To remove a log, use
log INDEX l/
. - The index refers to the index number shown in the displayed student list.
- The index must be a positive integer 1, 2, 3, …
Examples:
-
log 1 l/CS2103T tutor
Edits the log of the 1st student to beCS2103T tutor
.
Locating students by name: find
Finds students whose names contain any of the given keywords.
Format: find KEYWORD [MORE_KEYWORDS]
- The search is case-insensitive. e.g
hans
will matchHans
- The order of the keywords does not matter. e.g.
Hans Bo
will matchBo Hans
- Only the name is searched.
- Only full words will be matched e.g.
Han
will not matchHans
- Students matching at least one keyword will be returned (i.e.
OR
search). e.g.Hans Bo
will returnHans Gruber
,Bo Yang
Examples:
-
find John
returnsjohn
andJohn Doe
-
find alex david
returnsAlex Yeoh
,David Li
Filter for specific projects: filter
Filters for projects that contain all the given keywords or tags that contain any of the given keywords.
Format: filter pr/KEYWORD...
or filter t/KEYWORD...
- The search is case-insensitive. e.g.
PROF-ILER
will matchprof-iler
- The order of the given keywords does not matter. e.g.
Project Orbital
will matchOrbital Project
- At least one fields must be provided, but not both. e.g.
filter pr/Prof-iler t/Y4
will not work. - Whitespaces in between each keywords separates the keywords. e.g.
Project Orbital
searches for both keywordsProject
andOrbital
- Only the full keyword will be matched. e.g.
Prof-iler
will not matchProf-ilers
- Filtering for project requires the project to contain all the given keywords. e.g.
filter pr/Project Orbital
will not match students with projectOrbital
whilefilter pr/Orbital
will match student withProject Orbital
- Filtering for tag requires the student to contain any of the given tags. e.g.
Y4
andCS
will match any student that contain eitherY4
orCS
or both tags. - All the filtered students will be shown in the displayed student list to the screen. Examples:
-
filter pr/prof-iler
returnsCharlotte Oliveiro
andDavid Li
which are the two students under the projectProf-iler
-
filter t/Y4 CS
returnsDavid Li
andIrfan Ibrahim
which are the students that contain at least one of the given keywords for the tag.
Sorting based on progress: sort
Sorts the student based on the progress, in either ascending or descending order.
Format: sort asc
or sort desc
- The order
asc
ordesc
is case-insensitive. -
asc
will sort the students based on ascending order of progress anddesc
will sort the students based on descending order of progress. - All the sorted students will be shown in the displayed student list to the screen.

Use
list
command to return to the original list after commands such as sort
, filter
and find
. The
sort
command works in conjunction with the filter
command. For example, the user can first apply a
filter
command (e.g. filter pr/Prof-iler
) to view the students in the project that contains the word Prof-iler. After filtering, user can execute sort desc
to arrange students in those project based on their progress in descending order. This can also be done the other way round by applying the
sort
command first followed by filter
command.
Example usage of filter pr/Prof-iler
followed by sort desc
:
Deleting students : delete
Deletes the specified student from Prof-iler.
Format: delete INDEX [,INDEXES] ...
- Deletes the student(s) at the specified
INDEX
orINDEXES
. - The indexes refer to the index numbers shown in the displayed student list.
- The indexes must be positive integers 1, 2, 3, …
- Indexes can be specified in a list separated by commas
,
, allowing for multiple deletions in a single command.
Examples:
-
list
followed bydelete 2
deletes the 2nd student in Prof-iler. -
find Betsy
followed bydelete 1
deletes the 1st student in the results of thefind
command. - delete 1, 3, 4 deletes the 1st, 3rd, and 4th students from the displayed list in Prof-iler.
Clearing all entries : clear
Clears all entries from Prof-iler, or clears a given project.
Format: clear [PROJECT]
- If no project is given, all the entries are cleared.
- The project field is case-insensitive.
- All the students under the project will be cleared.
A pop-up message to confirm your action will appear. It defaults to No
to prevent accidental deletion.
Simply use keyboard tab or arrow keys to toggle between the options. Press enter
on your keyboard to confirm the selection. Alternatively, you can also click on the buttons using your cursor.
Examples:
-
clear
clears all entries. -
clear prof-iler
clearsCharlotte Oliveiro
andDavid Li
which are the two students under the projectProf-iler
.
Exiting the program : exit
Exits the program.
Format: exit
Saving the data
Prof-iler 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
Prof-iler data are saved automatically as a JSON file [JAR file location]/data/prof-iler.json
. Advanced users are welcome to update data directly by editing that data file.

Furthermore, certain edits can cause the Prof-iler application to behave in unexpected ways (e.g. if a value entered is outside of the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
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 Prof-iler home folder.
Known issues
-
When using multiple screens, if you move the application to a secondary screen, and later switch to using only the primary screen, the GUI will open off-screen. The remedy is to delete the
preferences.json
file created by the application before running the application again. -
If you minimize the Help Window and then run the
help
command (or use theHelp
menu, or the keyboard shortcutF1
) 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.
Command summary
Action | Format, Examples |
---|---|
Add |
add n/NAME id/STUDENT_ID p/PHONE_NUMBER e/EMAIL pr/PROJECT [pb/PROGRESS] [t/TAG]… e.g. add n/James Ho id/A0223615H p/82793554 e/jamesho@example.com pr/Project_Orbit t/Y3 pb/29 t/BZA
|
Clear |
clear [PROJECT] e.g. clear e.g. clear prof-iler
|
Delete |
delete INDEX [,INDEXES] ... e.g. delete 1, 3
|
Edit |
edit INDEX [n/NAME] [id/STUDENT_ID] [p/PHONE] [e/EMAIL] [pr/PROJECT] [pb/PROGRESS] [t/TAG]… e.g. edit 2 n/James Lee id/A0112946T e/jameslee@example.com
|
Filter |
filter pr/KEYWORD... or filter t/KEYWORD... e.g. filter pr/prof-iler e.g. filter t/CS2103T CS2109S
|
Sort |
sort asc or sort desc
|
Find |
find KEYWORD [MORE_KEYWORDS] e.g. find James Jake
|
Progress |
progress INDEX pb/PROGRESS e.g. progress 1 pb/45
|
List | list |
Log |
log INDEX l/LOG e.g. log 1 l/CS2103T tutor for Class 2A
|
Help | help |
Glossary
This glossary defines key terms and abbreviations used in the Prof-iler User Guide.