Welcome to ProfBook, a specialised student management system exclusively tailored for CS2103T tutors by CS2103T students. This guide is your gateway to unlocking the potential of ProfBook, where you will discover how ProfBook can help streamline your administrative tasks, alleviate workload and most importantly reduce any administrative errors.
As current students of CS2103T, we understand that CS2103T tutors have a high administrative workload on top of their existing tutor duties. On top of that, any administrative mistakes or oversights can increase that workload exponentially and may adversely impact students' learning. We deeply appreciate your role, and it is precisely to address these aforementioned issues that we designed ProfBook. ProfBook aims to drastically decrease administrative mistakes and your workload.
ProfBook is optimized for tutors' use via a familiar Command Line Interface (CLI) that uses Linux-styled commands while retaining the benefits of a Graphical User Interface (GUI). If you are a fast typer, ProfBook will empower you to efficiently track and manage students' progress and tasks, surpassing the capabilities of traditional GUI apps with a gentle learning curve.
As a project-based module, CS2103T tutors have to juggle multiple groups. ProfBook aims to expedite this process by allowing you to keep track of all your groups and their progress within a centralised location. You would be able to traverse between the different groups quickly through familiar Linux commands.
ProfBook aids with the management of student and group information. ProfBook efficiently encapsulates information of every project group so that you can easily monitor their progress and relevant information. You can effortlessly add, delete and edit students or groups and even move students from one group to another.
In addition to the efficient management of student and group information, ProfBook also aids with the management of task information. You can quickly and seamlessly allocate tasks to specific student or group and track their progress. With ProfBook, you can easily monitor each stage of the task journey, from start to finish, ensuring optimal productivity.
Table of Contents
The following steps are similar for all operating systems(OS) such as Windows, macOS and Linux.
Ensure you have Java 11
or above installed in your computer.
Download the latest ProfBook.jar
from here.
Copy the file to the folder you want to use as the home folder for your ProfBook.
Open a command terminal, cd
into the folder you put the jar file in, and use the java -jar ProfBook.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.
Some example commands you can try:
cat grp-001
: Lists all tasks belonging to grp-001.
touch grp-001/0123Y --name Bob
: Adds a student named Bob
to the grp-001.
rm grp-001
: Deletes grp-001.
Refer to the General Commands, Student or Group Commands, Tasks Commands below for details of each command.
We understand that it may be daunting to delve into a completely new user guide. This section is designed to make this journey more smooth sailing for you and enhance your understanding of the commonly used icons and boxes. We hope you enjoy your reading experience! 😊 📖
Light blue boxes like this with an "i" icon are designated for information-related content.
Keep a look-out for green boxes like this with a light bulb icon, they provide valuable suggestions on how you can better make use of the commands for greater efficiency and convenience once you have mastered the basics of the command.
When you come across yellow boxes like this with a "!" icon, do take extra note and caution!
It contains crucial cautionary information that is definitely a must read.
This is utilized to indicate the output if command succeeds.🙆
This is utilized to indicate the output if command fails.🙅
ProfBook is organized hierarchically with the following structure:
Root Directory (e.g., ~/
)
The Root Directory serves as the main container for the ProfBook software. This is where all the data is organized.
Group Directories (e.g., grp-001
, grp-002
, ...)
Within the Root Directory, there are Group Directories only. Each Group Directory is dedicated to managing a specific group of students.
Student Directories (e.g., 1001Z
, 5815Y
, ...)
Inside each Group Directory, you'll find Student Directories only. These directories represent individual students
within each group.
This hierarchical structure enables a well-organized and efficient way to manage groups and students within ProfBook.
UPPER_CASE
are the compulsory parameters to be supplied by you.
touch SPECIFIED_PATH -n NAME
, SPECIFIED_PATH
and the other field in UPPER_CASE
can be substituted
with the desired details to form touch 2000Y --name Bob
.UPPER_CASE
that are surrounded by [square brackets]
are optional parameters to be supplied by you.
cat [SPECIFIED_PATH]
, [SPECIFIED_PATH]
can be substituted with details or left empty,
cat 2000Y
and cat
are acceptable commands.-n NAME -e EMAIL
, -e EMAIL -n NAME
is also acceptable.help
, exit
and clear
) will be ignored.
help 123
, it will be interpreted as help
.DESCRIPTION
).DESCRIPTION
) and due date (DATE_AND_TIME
).\
, -
or --
, you would need to use \
before the start of
that field.
-
or --
will be treated as flags and fields that start with \
will be treated without \
(\Orchard
when inputted will be treated as Orchard
).
-Clementi
in the edit
command, the command would be edit -a \-Clementi
.If you are using a PDF version of this document, please 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.
All flags begin with --
or -
.
Flags usually come before essential details required by the command and are compatible in both long and short forms:
--name
/ -n
followed by the name of student or group as specified by command.--email
/ -e
followed by the email of student.--phone
/ -p
followed by the phone number of student.--address
/ -a
followed by the address of student.--id
/ -i
followed by a STUDENT_ID
or GROUP_ID
as specified by the command.--desc
/ -d
followed by the description of task specified by command.--datetime
/ -dt
followed by the due date of a deadline task in the yyyy-MM-dd HH:mm
format.--all
/ -al
followed by either:
allStu
which adds individual tasks to all students within the specified directory.
allGrp
which adds group tasks to all groups within the root directory.
--help
/ -h
exit
, help
and clear
) for more information.touch --help
to learn more about how to add a student to ProfBook.SPECIFIED_PATH
:
SPECIFIED_PATH
to be a present path (path that currently exists within ProfBook)
except for the touch
and mkdir
commands.Symbol | Purpose of symbol |
---|---|
.. | Step up one level from the current directory. e.g. when executing cd .. at the group directory, you will move up to the root directory. |
. | Stays as current directory. |
/ | Between every type of directory (Root, Group and Student), it will be separated by / . This format ensures a clear and consistent representation, which aligns with the familiar Linux command. |
~ | Represents the root directory. |
To begin writing a valid path, start with the directory you can and intend to navigate. Alternatively, you can always
commence from the root directory, ~/
, and define your path as the route leading from the root directory to your desired directory.
Kindly note that direct navigation between directories of the same type is not permitted.
You would need to navigate up by at least one directory before moving to the desired directory.
e.g. use ../grp-001
to navigate up to the root directory first before navigating to the grp-001
group directory
from another group directory.
Additionally, skipping directories between other directories is not allowed. For instance, to navigate from the root directory
to a student directory, 0123Y
, where the student directory is within group directory, grp-001
,
you would need to utilize ~/grp-001/0123Y
and not ~/0123Y
.
NAME
:
EMAIL
:
local-part@domain
.
local-part
:
+
_
.
-
.domain
:
PHONE_NUMBER
:
ADDRESS
:
STUDENT_ID
:
Required format for StudentId:
XXXXa
where XXXX
is replaceable with any 4-digit whole number and a
is replaceable with any alphabet.
8467U
GROUP_ID
:
Required format for GroupId:
grp-XXX
where XXX
is replaceable with any 3-digit whole number.
GrP-001
and Grp-002
are also acceptable.grp-001
DESCRIPTION
:
DATE_AND_TIME
:
yyyy-MM-dd HH:mm
where each alphabet will be replaced by a positive whole number.
yyyy
: year.MM
: month.dd
: day.HH
: hour (24-hour format).mm
: minutes.TASK_INDEX
:
ProfBook's graphical user interface(GUI) presents crucial information through visuals. However, please note that ProfBook utilizes a Command Line Interface (CLI) approach, limiting the interactions with the graphical components to mainly scrolling via scrollbars. Let's navigate ProfBook's GUI together in sequential order!
Upon launching ProfBook, you will see the root directory as illustrated below.
Component name | Description |
---|---|
File Button | Click the File Button to access the Exit Button, allowing you to exit ProfBook. |
Help Button | Easy access to the User Guide by clicking this button. |
Current Directory Display | Displays your current directory. In this case, you are in the root directory, ~/ . |
Command Input Column | This area is for inputting commands. This will likely be the component you will be using most frequently. |
Message Display Column | Displays the output of the command result. Please take note of it especially when a command fails. |
Group List | Shows the groups within the root directory. |
List Type Indication | Indicates the list type of the current display you are viewing, either a Children List or Task List. In this instance, it shows the Children List of the root directory. |
grp-001
When you navigate to the group directory, grp-001
, using cd grp-001
, your interface should resemble
the following.
Component name | Description |
---|---|
Current Directory Display | Displays your current directory. In this case, you are in the group directory, ~/grp-001 . |
Message Display Column | Displays the output of the command result. Note that it shows that your directory has changed after executing cd command. |
Student List | Shows the students within current group directory. |
List Type Indication | Indicates the list type of the current display you are viewing, either a Children List or Task List. In this instance, it shows the Children List of the group directory. |
grp-001
To view the task list of the current group directory, simply use cat
.
Component name | Description |
---|---|
Current Directory Display | Displays your current directory. In this case, you are in the group directory, ~/grp-001 . |
Message Display Column | Displays the output of the command result. Note that it shows that you are viewing the task list of group directory, ~/grp-001 . |
Task List | Shows the tasks allocated to group at current group directory. |
Task Type Tag | Shows the task type of the specific task, distinguishing between Todo tasks (highlighted in yellow) and Deadline tasks (highlighted in green). |
Task Status Box | Indicates completion status of specific task, using a tick for marked task and the absence of a tick for unmarked task. |
List Type Indication | Indicates the list type of the current display you are viewing, either a Children List or Task List. In this instance, it shows the Task List of the group directory. |
cd
Changes the current directory in ProfBook.
Format: cd SPECIFIED_PATH
SPECIFIED_PATH
:
Please note that the path entered should not lead back to the current directory you are at.
For example, if you are at ~/grp-001
, when you execute cd ../grp-001
, the Message Display Column
will indicate that you are already in the directory.
~/
and would like to take a look at the group directory, ~/grp-001
,
cd grp-001
changes your directory to grp-001
.~/grp-001
and would like to change directory from grp-001
to grp-002
you could
use,
cd ../grp-002
-> use ..
to navigate up to the root directory before proceeding to the grp-002
directory.
Other than checking the Message Display Column to ensure that the command has been executed successfully,
you could always look at the Current Directory Display in the top left corner of the window.
In the image above, you can easily see that the current directory has been switched from
~/grp-001
to ~/grp-002
.
ls
Shows the list of children in the specified directory.
Format: ls [SPECIFIED_PATH]
[SPECIFIED_PATH]
:
If [SPECIFIED_PATH]
is not provided, the ls
command will show the list of children in the current directory.
Current directory must be a root or group directory.
~/
and would like to see all the groups you have,
ls
will return all the current groups.~/
and would like to see the students under grp-001
,
ls grp-001
will return all the students in grp-001
.cat
Displays all tasks in the specified directory.
Format: cat [SPECIFIED_PATH]
[SPECIFIED_PATH]
:
If [SPECIFIED_PATH]
is not provided, current directory must be a group directory.
The cat
command will show the list of tasks in the current group directory.
~/grp-001
and would like to see all tasks allocated to grp-001
,
cat
will return all the tasks allocated to grp-001
.If you are at the directory ~/grp-001
and would like take a quick look of the tasks allocated to student with the StudentId 0010Y
(0010Y
is within grp-001
),
cat 0010Y
will return all the tasks allocated to student with the StudentId 0010Y
.help
Shows a message of the commands you could use.
Format: help
clear
Clears all entries from ProfBook.
Format: clear
The clear
command, upon confirmation by pressing enter, will clear all entries from ProfBook.
It is crucial to note that there is no way to recover these entries once the clear
command has been executed.
Therefore, we strongly advise exercising caution when using this command.
exit
Exits the program.
Format: exit
This command is a time-saver for those who would rather avoid using the mouse to click on the close button positioned in the top-left corner of the window.
touch
Adds a student into the specified group directory.
Kindly note that the addition of students is exclusively to group directories. This means direct addition of students to the root directory is not allowed.
Format: touch SPECIFIED_PATH --name NAME [--email EMAIL] [--phone PHONE_NUMBER] [--address ADDRESS]
SPECIFIED_PATH
:
~/grp-001
, you could add a new student named Bob with the StudentId 0200Y
to this group through the following command,
touch 0200Y --name Bob
Following the execution of the touch
command, Bob appears in the Student List. The Message Display Column
also indicates the addition of a new student, Bob.
Observe that all fields for Bob, except for Name and StudentId, are marked n/a
as you did
not include them in the initial command. But fear not! You can always add these additional fields through
the edit command!
When you are at the group directory ~/grp-001
and would like to add the same student, to another directory
~/grp-002
instead,
touch ../grp-002/0200Y --name Bob
to save yourself the trouble from having to change
directory before executing the touch
command!mkdir
Creates a group in the root directory that can contain students.
Kindly note that the addition of groups is exclusively to the root directory. This means that addition of groups under another group directory is not allowed.
Format: mkdir SPECIFIED_PATH_TO_GROUP --name NAME
SPECIFIED_PATH_TO_GROUP
:
~/
and would like to add a new group with the GroupId grp-001
,
mkdir grp-001 --name Group 001
will add that group named Group 001
.edit
The edit
command uses the same command word, edit
, for both editing students and groups.
For greater clarity, we have separated the sections for editing a student and group.
If you wish to edit a group instead, please refer to the dedicated section here.
Edits a student's details including name, email, phone, address or StudentId in the specified path.
One or more fields can be edited in a single command.
Format: edit SPECIFIED_PATH [--name NAME] [--email EMAIL] [--phone PHONE_NUMBER] [--address ADDRESS] [--id STUDENT_ID]
SPECIFIED_PATH
:
grp-001
with the StudentId 0010Y
changed his phone number, you could execute the following command
at the directory ~/grp-001
, to make the necessary changes.
edit 0010Y --phone 91919191
When you are at the root directory ~/
and would like to edit the same student's phone number,
edit ~/grp-001/0010Y --phone 91919191
to save yourself the trouble from having to change
directory before executing the edit
command!edit
The edit
command uses the same command word, edit
, for both editing students and groups.
For greater clarity, we have separated the sections for editing a student and group.
If you wish to edit a student instead, please refer to the dedicated section here.
Edits a group's details including name or GroupId in the specified path.
One or more fields can be edited in a single command.
Format: edit [SPECIFIED_PATH] [--name NAME] [--id GROUP_ID]
[SPECIFIED_PATH]
:
If [SPECIFIED_PATH]
is not provided, current directory must be a group directory.
The edit
command will edit the group at current directory.
Note: Changes to group name will only be visible after you have cd
out of current group directory
to root directory.
grp-001
changed their group name, you could execute the following command
at the directory ~/grp-001
, to make the necessary changes.
edit --name Amazing Group1
When you are at the root directory ~/
and would like to edit the same group's name,
edit ~/grp-001 --name Amazing Group1
to save yourself the trouble from having to change
directory before executing the edit
command!rm
Removes a student or group from the specified path.
Format: rm SPECIFIED_PATH
SPECIFIED_PATH
:
~/
and would like to remove the group with the GroupId grp-001
,
rm grp-001
will do that!When you are at the root directory ~/
and would like to remove the student with the StudentId 0123Y
,
in ~/grp-001
,
rm ~/grp-001/0123Y
to save yourself the hassle of having to change directory!mv
Moves student from one group to another group.
Format: mv SPECIFIED_PATH_TO_STUDENT SPECIFIED_PATH_TO_GROUP
SPECIFIED_PATH_TO_STUDENT
:
SPECIFIED_PATH_TO_GROUP
:
~/
, you could move a student with the StudentId 0123Y
, from grp-001
to grp-002
through this command easily,
mv grp-001/0123Y grp-002
When you are at the directory ~/grp-001
and would like to move a student with the StudentId 0123Y
to grp-002
without changing to the
root directory,
mv 0123Y ../grp-002
!Student Tasks are tasks assigned to individual students. These tasks are ideal for assignments where each student is required to complete and submit their assignment independently.
Group Tasks on the other hand are tasks designated for a specific group as a collective responsibility, not individual students within the group. They are suitable for tasks that require group collaboration instead of individual student contributions.
Tasks are only allocated to groups or students. This means that tasks cannot be allocated to the root directory.
todo
Creates todo tasks for specific student(s) or group(s).
Format: todo [SPECIFIED_PATH] --desc DESCRIPTION [--all CATEGORY]
[SPECIFIED_PATH]
:
If [SPECIFIED_PATH]
is not provided, current directory must be a group directory.
If you use --all allStu
, the command will create todo tasks for all the students within this group directory.
Else, the command will create a todo task for the group at current directory.
0010Y
has to redo his tutorial, you could use the following command when you are in the directory
~/grp-001
to allocate the task to just this student,
todo 0001Y --desc Redo tutorial
When you have an assignment, Assignment 1
to be allocated to all your students in grp-001
, you could use the
following command at the root directory, ~/
,
todo ~/grp-001 --desc Assignment 1 --all allStu
deadline
Creates task with a deadline for specific student(s) or group(s).
Format: deadline [SPECIFIED_PATH] --desc DESCRIPTION --datetime DATE_AND_TIME [--all CATEGORY]
[SPECIFIED_PATH]
:
If [SPECIFIED_PATH]
is not provided, current directory must be a group directory.
If you use --all allStu
, the command will create deadline tasks for all the students within this group directory.
Else, the command will create a deadline task for the group at current directory.
DATE_AND_TIME
accepts past deadlines. Hence, you can also utilize the deadline
command
to keep track of past events without worry!
0010Y
has to hand in his assignment again by a certain date,
you could use the following command when you are in the directory ~/grp-001
,
deadline 0001Y --desc resubmit Assignment 1 --datetime 2023-10-11 23:59
When you have a task, Project 1 submission
with a deadline to be allocated to all your groups,
you could use the following command at the root directory, ~/
,
deadline --desc Project 1 submission --datetime 2023-10-11 23:59 --all allGrp
mark
Marks the specified task as done for the specified student or group.
Format: mark TASK_INDEX
When using this command, you will first need to cat
at the path where the task list is at before executing mark
.
~/grp-001
directory and wish to mark the completion of the first task
allocated to student with the StudentId 0123Y
, you could follow these commands in sequential order.
cat 0123Y
mark 1
Did you observe the difference in the Task Status Box between the 2 pictures?
The first image shows the outcome when you execute cat 0123Y
, whereas the second image shows
the outcome of the execution of mark 1
.
Notice the presence of a tick in the Task Status Box of the second image,
after you mark the task.
unmark
Unmarks the specified task for the student or group.
Format: unmark TASK_INDEX
When using this command, you will first need to cat
at the path where the task list is at before executing unmark
.
~/grp-001
directory and would like to unmark the first task
allocated to this group, you could follow these commands in sequential order.
cat
unmark 1
The process and result shown should be similar to the mark
command except that
instead of noticing the presence of a tick in the Task Status Box,
you should observe an absence of the tick after executing the unmark
command.
rmt
Removes a task according to the task index.
Format: rmt TASK_INDEX
When using this command, you will first need to cat
at the path where the task list
is at before executing rmt
.
~/grp-001
directory and no longer want to keep track of the first task
allocated to student with the StudentId 0123Y
, you could always remove this task by following these
commands in sequential order.
cat 0123Y
rmt 1
ProfBook data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
As Albert Einstein wisely said, "A person who never made a mistake never tried anything new".
At ProfBook, we wholeheartedly believe that mistakes are part of the learning journey. We are here to support you in your quest of mastering ProfBook, helping you recover from any hiccups that may happen along the way. As such, we have collated a list of some commonly made mistakes and solutions to them. 💪
Some possible errors from invalid command format are,
Please note that if there are multiple invalid options, only the first invalid option will be shown in the return
message.
This approach aids you to concentrate on addressing the current invalid option before moving on to the subsequent
ones. The next invalid option will be shown after rerunning the command if the current invalid option has been solved.
General solution: Ensure that the command you enter adheres to the format provided in the user guide.
Solution: Please check that the path you entered is the path required by the command which can be seen in the User Guide. Additionally, do ensure that it is the intended path you wish to utilise, and it exists within ProfBook.
Solution: Task index starts from 1. Check that the index you input is a positive whole number and falls within the range of 1 to the total number of tasks in the task list.
Solution:
Please do not forget to execute the cat
command prior to executing the required command.
Solution:
If editing a student, ensure that you have indicated at least one field
(NAME
, EMAIL
, PHONE_NUMBER
, ADDRESS
or STUDENT_ID
) to edit and that the flag used is accurate.
If editing a group, ensure that you have indicated at least one field (NAME
or GROUP_ID
)
to edit and that the flag used is accurate.
Solution: When modifying information for a student or group, please ensure that at least one field you intend to edit differs from the current parameters associated with the student or group.
Solution: Ensure that the GroupId or StudentId you entered does not coincide with other GroupId or StudentId respectively in the whole ProfBook.
Q: How do I transfer my data to another computer?
A: Install ProfBook in the other computer and overwrite the empty data file it creates with the file that contains
the data of your previous ProfBook home folder.
Q: Is there an edit
command for tasks?
A: Currently, we do not have an edit
command for tasks. But we would love to have it in ProfBook and
are definitely working toward including it in our future enhancements.
Do note that if you decide to edit the data file manually, any invalid edits may cause the presence of duplicates or cause ProfBook to start with an empty file. So, do proceed with caution!
preferences.json
file created by the
application before running the application again.This section is dedicated to the exciting future enhancements we envision for ProfBook.
Viewing edited group name at current group directory:
cd
out of the current group directory to
the root directory, similar to terminal behaviour.Marking and Unmarking tasks:
Editing tasks:
edit
command for tasks. But you could always rmt
the task
and add it back through the todo
or deadline
command!edit
command for tasks, mirroring the
edit
command for students and groups. This addition will simplify the learning process of this new command,
ensuring a seamless experience for you.Action | Format, Example(s) |
---|---|
Change Directory | cd SPECIFIED_PATH e.g. cd ../grp-001 |
Display Children List | ls [SPECIFIED_PATH] e.g. ls grp-001 |
Display Task List | cat [SPECIFIED_PATH] e.g. cat 1234A, cat grp-001 |
Help | help |
Clear all entries | clear |
Exit the program | exit |
Add Student | touch SPECIFIED_PATH -n NAME [-e EMAIL] [-p PHONE_NUMBER] [-a ADDRESS] e.g. touch 2000Y -n Bob -e bobby@example.com -p 92929292 -a blk 258 Toa Payoh |
Create Group | mkdir SPECIFIED_PATH_TO_GROUP -n NAME e.g. mkdir grp-001 -n Group 001 |
Edit Student | edit SPECIFIED_PATH [-n NAME] [-e EMAIL] [-p PHONE_NUMBER] [-a ADDRESS] [-i STUDENT_ID] e.g. edit 0010Y -p 91919191 |
Edit Group | edit [SPECIFIED_PATH] [-n NAME] [-i GROUP_ID] e.g. edit -n Amazing Group |
Delete Student or Group | rm SPECIFIED_PATH e.g rm 0123Y , rm grp-002 |
Move Student | mv SPECIFIED_PATH_TO_STUDENT SPECIFIED_PATH_TO_GROUP e.g. mv grp-001/0123Y grp-002 |
Create Todo | todo [SPECIFIED_PATH] -d DESCRIPTION [-al CATEGORY] e.g. todo 2000Y -d Assignment 1 |
Create Deadline | deadline [SPECIFIED_PATH] -d DESCRIPTION -dt DATE_AND_TIME [-al CATEGORY] e.g. deadline 2000Y -d Assignment 1 -dt 2023-10-11 23:59 |
Mark | mark TASK_INDEX e.g. mark 1 |
Unmark | unmark TASK_INDEX e.g. unmark 2 |
Delete Task | rmt TASK_INDEX e.g. rmt 1 |