Hall Ledger (HL) is a desktop application that helps Resident Assistants (RAs) efficiently manage residents in NUS halls. It is optimised for users who prefer typing commands, while still offering an intuitive visual interface for viewing resident data at a glance.
Ensure you have Java 17 or above installed in your Computer.
Mac users: Ensure you have the precise JDK version prescribed here.
Download the latest .jar file from here.
Copy the file to the folder you want to use as the home folder for your HallLedger.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar hall-ledger.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 residents.
add n=John Doe p=+6598765432 e=johnd@example.com i=A1234567X r=1A ec=+65 12345678 : Adds a resident named John Doe to HallLedger.
demeritlist : Shows the indexed demerit rules available in HallLedger.
demerit i=A1234567X di=18 rm=Visitor during quiet hours : Adds a demerit record to the resident with student ID A1234567X.
delete i=A1234567X : Deletes the resident with student ID A1234567X.
clear : Deletes all residents.
exit : Exits the app.
Refer to the Features below for details of each command.
Notes about the command format:
Words in UPPER_CASE are the parameters to be supplied by the user.
e.g. in add n=NAME, NAME is a parameter which can be used as add n=John Doe.
Items in square brackets are optional.
e.g n=NAME [e=EMAIL] can be used as n=John Doe e=johnd@example.com or as n=John Doe.
Items with … after them can be used multiple times including zero times.
e.g. [t=TAG]… can be used as (i.e. 0 times), t=friend, t=friend t=family 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.
Extraneous 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 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.
helpOpens the HallLedger Help window, which displays the available commands and their usage formats.
Format: help
Example:
helpWhen the command is entered, HallLedger opens a Help window containing a quick reference list of supported commands. The Help window also includes a reference to the HallLedger User Guide for more detailed explanations.
addAdds a person to the hall ledger.
Format: add n=NAME p=PHONE_NUMBER e=EMAIL i=STUDENT_ID r=ROOM_NUMBER ec=EMERGENCY_CONTACT
Examples:
add n=John Doe p=+6598765432 e=johnd@example.com i=A101010X r=1A ec=+91 2345 9876add n=Betsy Crowe i=A202020Y e=betsycrowe@example.com p=+65 1234567 r=14L ec=+6512345678NOTE
A newly added person will not have any tags
listShows a list of all persons in the address book.
Format: list
tagAdds Major, Year and Gender tags to an existing student.
Format: tag i=STUDENT_ID [m=MAJOR] [y=YEAR] [g=GENDER]
Examples:
tag i=A0123456N y=Y3 m=Information Systems: Assigns Year 3 and Information Systems as the student’s tags (any existing tags are replaced).tag i=A0101010X g=Female: Updates the student’s Gender to Female and leaves other tags unchanged.editEdits an existing student in the Hall Ledger.
Format: edit STUDENT_ID [n=NAME] [p=PHONE] [e=EMAIL] [r=ROOM_NUMBER] [ec=EMERGENCY_CONTACT]
A1234567X.Examples:
edit A1234567X p=91234567 e=johndoe@example.com edits the phone number and email address of the resident with student ID A1234567X to be 91234567 and johndoe@example.com respectively.edit A8765432Y n=Betsy Crower ec=98765432 edits the name and emergency contact of the resident with student ID A8765432Y to be Betsy Crower and 98765432 respectively.findFinds residents using one or more fields such as name, phone, email, room, student ID, emergency contact, year, major, and gender.
Using the command line
Format: find [n=NAME] [p=PHONE] [e=EMAIL] [r=ROOM_NUMBER] [i=STUDENT_ID] [ec=EMERGENCY_CONTACT] [y=YEAR] [m=MAJOR] [g=GENDER]
find n=Alice y=Y1 gives the same result as find y=Y1 n=ALICE.find n=Alice p=9123 y=Y1 returns residents who match name, phone, and year.find y=Y2 y=Y3 returns residents in Year 2 or Year 3.find n=Hans Bo n=Anna Lee returns residents matching either n= value.g=GENDER uses full-value matching (case-insensitive). Other fields use fuzzy-friendly matching.Examples:
find n=John Doe returns residents whose names match John Doe.find n=Alex n=David returns residents matching either name value.find m=CS m=Economics g=Male g=Others returns residents whose major is CS or Economics, and whose gender is Male or Others.find ec=+84 e=gmail returns residents whose emergency contact matches +84 and email matches gmail.Result of running find n=Alice Pauline from the command line (matching resident(s) are shown in the list view):
Using the user interface
find
applies.x beside that keyword.For full matching behavior and examples, see Fuzzy Matching Details.
remarkAdds a remark to an existing resident.
Format: remark i=STUDENT_ID rm=REMARK
rm=) will clear the existing remark.Examples:
remark i=A1234567X rm=Allergic to peanutsremark i=A1234567X rm=demeritlistShows the indexed demerit rules available in HallLedger.
Format: demeritlist
demerit command when recording a resident’s demerit incident.Example:
demeritlistdemeritAdds a demerit record to an existing resident.
Format: demerit i=STUDENT_ID di=RULE_INDEX [rm=REMARK]
RULE_INDEX to the resident identified by STUDENT_ID.STUDENT_ID must refer to an existing resident in HallLedger.RULE_INDEX must match one of the indexed rules shown by demeritlist.rm= is optional and can be used to store a short context note for that incident.Examples:
demerit i=A1234567X di=18demerit i=A1234567X di=18 rm=Visitor during quiet hoursdemerit i=A0312075X di=28 rm=Common pantry left dirtyCurrent scope note: HallLedger records resident demerit incidents and their accumulated totals. It does not yet automatically enforce semester-based or lifetime housing sanctions.
deleteDeletes the resident identified by student ID from HallLedger.
Format: delete i=STUDENT_ID
Example:
delete i=A0312075XAfter a valid delete command is entered, HallLedger shows a confirmation dialog before the resident is actually removed.
Deletion cancelled. and no resident will be removed.If the command format is invalid, HallLedger will show an error message instead of opening the confirmation dialog.
clearClears all entries from the address book.
Format: clear
exitExits the program.
Format: exit
HallLedger data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
HallLedger data are saved automatically as a JSON file [JAR file location]/data/addressbook.json. Advanced users are welcome to update data directly by editing that data file.
Caution:
If your changes to the data file make its format invalid, HallLedger will discard all data and start with an empty data file at the next run. Hence, it is recommended to take a backup of the file before editing it.
Furthermore, certain edits can cause HallLedger 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.
[coming in v2.0]Details coming soon ...
Q: How do I transfer my data to another Computer?
A: Install the app on the other computer and overwrite the empty data file it creates with the file that contains the data of your previous HallLedger home folder.
Q: Can I edit the data file manually?
A: Yes. HallLedger stores data locally in a human-editable text file. However, manual edits should be done carefully, because invalid edits may prevent HallLedger from loading the data correctly.
Q: How do I go back to seeing the list of all students after running find?
A: Run the list command to see the full list of students again.
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 e=EMAIL i=STUDENT_ID r=ROOM_NUMBER ec=EMERGENCY_CONTACT e.g., add n=James Lee p=+65 98765432 e=james@example.com i=A1234567X r=15R ec=+65 98765432 |
| Clear | clear |
| Delete | delete i=STUDENT_IDe.g., delete i=A1234567X |
| Edit | edit STUDENT_ID [n=NAME] [p=PHONE_NUMBER] [e=EMAIL] [r=ROOM_NUMBER] [ec=EMERGENCY_CONTACT]e.g., edit A1234567X n=James Lee e=jameslee@example.com |
| Tag | tag i=STUDENT_ID [m=MAJOR] [y=YEAR] [g=GENDER]e.g., tag i=A1234567X m=CS y=Y3 |
| Find | find [n=NAME] [p=PHONE] [e=EMAIL] [r=ROOM_NUMBER] [i=STUDENT_ID] [ec=EMERGENCY_CONTACT] [y=YEAR] [m=MAJOR] [g=GENDER]e.g., find n=James y=Y1 |
| Remark | remark i=STUDENT_ID rm=REMARKe.g., remark i=A1234567X rm=Allergic to peanuts |
| Demerit List | demeritlist |
| Add Demerit | demerit i=STUDENT_ID di=RULE_INDEX [rm=REMARK]e.g., demerit i=A1234567X di=18 rm=Visitor during quiet hours |
| List | list |
| Help | help |