GreyBook is a desktop application that helps NUS clubs and societies efficiently manage contacts and track attendance. It combines the speed and precision of a Command Line Interface (CLI) with the convenience of a Graphical User Interface (GUI).
Optimized for users who prefer typing commands, GreyBook enables fast, streamlined management — letting you accomplish more in less time than with traditional GUI-based applications.
New to the CLI? It simply means typing short commands (like add or list) instead of clicking through menus and buttons.
This guide is designed for leaders and committee members of NUS clubs or societies who:
Prior Knowledge:
Technical Requirements:
Check Java Version
Ensure you have Java 17 or above installed on your computer.
java -version
Cmd + Space, type Terminal in search bar to open.Ctrl + Alt + T to instantly open a terminal windowMac users: Follow this guide.
Windows users: Follow this guide.
Linux users: Follow this guide.
Download GreyBook
Download the latest .jar file from the Releases Page.
Copy the file to a folder you want to use as your home folder — this is where your GreyBook data will be stored.
Launch the Application
Open a terminal, navigate (cd) to that folder, and run:
java -jar greybook.jar
For example:
cd Downloads
java -jar greybook.jar
macOS users: If you see a security prompt the first time, right-click the
.jar→ Open → confirm.
First Look
GreyBook should launch within a few seconds. A few sample students are preloaded so you can try out basic commands immediately.
Let's try a few essential commands:
Add a Student
add n/John Doe p/98765432 e/johnd@example.com i/A0000000Y
Mark Attendance as Present
mark A0000000Y p/
Unmark Attendance
unmark A0000000Y
Find a Student
find i/A0000000Y
Refer to the Command Format Summary for the full list of supported commands.
Notes about the command format:
Words in UPPER_CASE are called parameters, things you replace.
e.g. in add n/NAME, replace NAME with a student's name, like add n/John Doe.
Items in square brackets are optional.
e.g. n/NAME [t/TAG] can be used as n/John Doe t/member or as n/John Doe.
Items in round brackets are mutually exclusive.
e.g. (INDEX | STUDENTID) can be used as 1 or as A0000000Y.
Items with … after them can be used multiple times, including zero times.
e.g. [t/TAG]… can be used as (0 times), t/member (1 time), t/member t/exco (2 times) etc.
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.
Extra parameters for commands that do not take in parameters (such as help, list, exit and clear) will be ignored.
e.g. if the command specifies help 123, it will be interpreted as help.
If a prefix for the command occurs in the argument, you may use quotation marks " to escape it.
e.g. SomeCommandName p/"p-Slash t/ contains t-Slash" t/tag
If you want to use quotation marks " in your argument, you have to escape it with a backslash \
e.g. SomeCommandName t/Quote: \"
Likewise if you wanted to use backslashes \ in your argument, you have to escape it with a backslash.
e.g. SomeCommandName t/Backslash: \\
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. Type them out manually instead!
| Command | Description | Syntax |
|---|---|---|
add | Create a new student | add n/NAME p/PHONE e/EMAIL i/STUDENTID [t/TAG]… |
edit | Update details | edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [i/STUDENTID] [t/TAG]… |
delete | Remove a student | delete (INDEX | STUDENTID) |
list | Show all students | list |
find | Search by name or student ID | find KEYWORD [MORE_KEYWORDS]… [i/ID_FRAGMENT]… |
mark | Mark attendance | mark (INDEX | STUDENTID) (p/ || a/ || l/ || e/) |
unmark | Unmark attendance | unmark (INDEX | STUDENTID | 'ALL') |
clear | Delete all students | clear |
help | Open the help window | help |
exit | Quit the app | exit |
GreyBook helps you store, edit, and track students' details with precision.
addCommand: add n/NAME p/PHONE e/EMAIL i/STUDENTID [t/TAG]…
Parameters:
n/NAME: Student's full name (letters, spaces, and certain special characters allowed)p/PHONE: 8-digit Singapore phone number or International phone numbers (following E.164 Standards)e/EMAIL: Valid email addressi/STUDENTID: Student's NUS ID (e.g., A0000000Y)t/TAG: Optional categories (e.g., t/committee or t/freshman)Tip: A name can only contain letters, spaces, and certain special characters. Refer to the Parameter Details for more details!
Tip: We use a special checksum to validate STUDENTID field so only valid NUS Student IDs will be accepted!
Examples:
add n/John Doe p/98765432 e/johnd@example.com i/A0000000Y
add n/Betsy Crowe p/87654321 e/betsycrowe@example.com i/A1111111M t/operations-team
Expected Output:
Tip: A student can have any number of tags (including 0)
editCommand: edit INDEX [n/NAME] [p/PHONE] [e/EMAIL] [i/STUDENTID] [t/TAG]…
Parameters:
INDEX: The index number in the displayed student list (must be positive)Behavior:
t/ (empty) to remove all tagsExamples:
edit 1 p/91234567 e/johndoe@example.com
edit 2 n/Betsy Crower t/
Expected Output:
listCommand: list
Tip: Use this command after a find command to see all students again!
findCommand: find KEYWORD [MORE_KEYWORDS]… [i/ID_FRAGMENT]…
Parameters:
KEYWORD: The name of the studenti/ID_FRAGMENT: A substring of a student ID (e.g. 0Y from A0000000Y)jhans will match HansStudents matching at least one keyword or one student ID fragment will be returned.
e.g. Hans Bo will return Hans Gruber, Bo Yang
Examples:
find John returns john and John Doefind i/12345 returns anyone with student IDs containing 12345 (e.g. A0123456J)find i/12345 i/A0123456J returns IDs containing 12345 or exactly A0123456Jfind i/12345 alex returns students named like Alex Yeoh or with IDs containing 12345find alex i/12345 returns same as above (order does not matter)find alex david returns Alex Yeoh, David Li
deleteCommand: delete (INDEX | STUDENTID)
Parameters:
INDEX: The index number in the displayed student list (must be positive)STUDENTID: Student's NUS ID (e.g., A0000000Y)Notes:
Examples:
list followed by delete 2 deletes the 2nd student in the GreyBook.find Betsy followed by delete 1 deletes the 1st student in the results of the find command.delete A0123456J deletes the student with student ID A0123456J from the GreyBook.clearCommand: clear
Deletes all entries from GreyBook.
Caution! This action cannot be undone!
GreyBook helps you keep track of students' attendance efficiently.
markCommand: mark (INDEX | STUDENTID) (p/ | a/ | l/ | e/)
Flags:
| Flag | Status |
|---|---|
p/ | Present |
a/ | Absent |
l/ | Late |
e/ | Excused |
Notes:
Examples:
mark 1 p/
mark A0000000Y e/
Expected Output:
Marked student A0000000Y as Present.
unmarkCommand: unmark (INDEX | STUDENTID | 'ALL')
Examples:
unmark 2
unmark A0000000Y
unmark all
Expected Output:
Unmarked attendance for A0000000Y.
Greybook also offers some core commands that are essential in every application.
helpCommand: help
Shows a message explaining how to access the help page.
exitCommand: exit
Closes GreyBook.
Similar to a typical CLI application, use the up or down arrows to navigate your command history. You can also use Ctrl+C to clear the current command!
Tip: If you have selected some text in the command, Ctrl+C will not clear your command. This way, you can still use Ctrl+C to copy the text!
The command history is saved in the hard disk automatically after every successful command, saved automatically as a JSON file at: [JAR file location]/history.json
Caution! It is not recommended to modify this file to alter your command history. If your changes to the history file makes it invalid, GreyBook will discard all history and start fresh on the next run. Before you edit, make a backup copy of the file.
GreyBook data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
The data is saved as a JSON file at:
[JAR file location]/data/greybook.json
Caution! Editing this file is recommended for advanced users only. If your changes to the data file makes it invalid, GreyBook will discard all data and start fresh on the next run. Before you edit, make a backup copy of the file. Some changes can cause the GreyBook to behave in unexpected ways (e.g., if a value entered is outside the acceptable range). Therefore, edit the data file only if you are confident that you can update it correctly.
| Parameter | Description |
|---|---|
NAME | Letters, spaces, and certain special characters allowed. |
PHONE | 8-digit Singapore phone number. |
EMAIL | Must follow valid email format (case-insensitive). |
STUDENTID | NUS Student ID (e.g., A0123456X). |
TAG | Optional label for categorizing members. |
INDEX | Positive integer (1, 2, 3, …). |
Tip: Refer to the FAQ for names with unsupported characters.
Q: What operating systems does GreyBook support?
A: Any system that can run Java 17+ (Windows, macOS, Linux). If Java runs, GreyBook runs.
Q: Do I need to install anything besides GreyBook?
A: Yes, Java 17 or newer. Check with java -version. If it's older, install a current Long Term Support Java version.
Q: How do I update GreyBook to a new version?
A: Download the new .jar and run it. Your existing data in data/greybook.json will be picked up automatically if you keep it in the same folder.
Q: Will I lose my data when I update?
A: No. The data file is separate from the app. Keep data/greybook.json with the .jar and you're good.
Q: Where exactly is my data?
A: In [JAR file location]/data/greybook.json.
Q: Can I move GreyBook to another computer (or a USB drive)?
A: Yes. Copy the .jar and the data folder together, as well the config and preferences files, config.json and preferences.json respectively. If you would to copy the command history as well, copy over the file history.json. On the new computer, double-click the .jar.
Q: Is there an undo command?
A: Not currently. Actions like delete and clear are immediate and irreversible. Consider regular backups of data/greybook.json.
Q: How do I back up my data?
A: Close GreyBook and copy data/greybook.json to a safe place (cloud/storage drive).
Q: I edited the JSON and something broke. What now?
A: Close GreyBook, restore your backup greybook.json, then reopen GreyBook. Avoid manual edits unless you're confident.
Q: Are name searches case-sensitive?
A: No. hans matches Hans.
Q: Why doesn't find Han match Hans?
A: find matches full words. Use the full word or multiple keywords.
Q: How do tags work?
A: Add any number: t/member t/colleague. Editing tags replaces the old set. Use t/ (empty) to clear all tags.
Q: Can I store addresses or other fields?
A: Only the fields shown in the command formats are supported (e.g., n/, p/, e/, i/, and tags).
Q: Does GreyBook save automatically?
A: Yes. Changes are saved to greybook.json right after each command.
Q: How many students can I store?
A: There's no hard limit in the app; performance depends on your computer.
Q: How do I reset GreyBook to factory data?
A: Close the app, delete data/greybook.json, and reopen GreyBook (you'll start fresh with sample data).
Q: What characters are allowed in the name field?
A: Only alphabets and the following special characters are allowed: (Empty space), ,, (, ), /, ., @, -, '.
Q: My name contains a character that is not allowed in the name. How should I enter my name?
A: Please use standard English (Latin) letters only.
For example, if your name is "محمد", you can enter it as "Mohamed". If your name is "李华", you can enter it as "Li Hua".
Similarly, if your name contains special characters such as accents or diacritics (e.g. "José", "Strauß"), please remove them — e.g. "Jose", "Straus".
Q: Why are some special characters allowed but not others?
A: This is due to the limitation of the program, as we are unable to support every single possible unicode character. We defer this decision to Singapore's Myinfo for supported special characters.
Student: A member of the club or society. Tag: A label used to categorize students (e.g., "committee", "freshman"). Attendance: Record of presence, absence, lateness, or excused status at an event.
System Requirements:
Supported Platforms:
Data Storage:
Development Team: Project maintained by CS2103T-F13-4 team GitHub: AY2526S1-CS2103T-F13-4/tp
Support:
Version Information:
Thank you for using GreyBook! We hope it helps your club run smoothly and efficiently.