BZNUS is a desktop app for tracking customer contacts, food orders and customer-specific preferences. It is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, BZNUS can get your contact management and order tracking tasks done faster than traditional GUI apps.
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 .jar file to the folder you want to use as the home folder for BZNUS.
Open a command terminal, cd into the folder you put the jar file in, and use the java -jar bznus.jar command to run the application.
A GUI similar to the following 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 customers.
add n/John Doe p/98765432 a/John street, block 123, #01-01 : Adds a contact named John Doe to the customer database.
order 1 i/Pizza q/3 at/2026-06-02 1200 a/123 Jurong West St 42, #05-01 s/PREPARING : Adds an order for 3 pizzas to the 1st customer in the current list.
delete 3 : Deletes the 3rd contact shown in the current list.
clear : Deletes all contacts.
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 [t/TAG] can be used as n/John Doe t/friend 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. Space characters surrounding line-breaks may be omitted when copied over to the application.
helpShows a message explaining how to access the help page.
Format: help
addAdds a customer to the customer database.
Format: add n/NAME [p/PHONE] [ig/INSTAGRAM] [fb/FACEBOOK] [a/ADDRESS] [r/REMARK] [t/TAG]…
NAME is mandatory. It must contain only alphanumeric characters, spaces, and apostrophes (e.g. Mary O'Connor). It cannot be blank.PHONE must be 8 to 15 digits long and contain only numbers (e.g. 91234567 or 60123456789). No spaces, '+' sign, or other symbols are allowed.INSTAGRAM must be 1 to 30 characters long and contain only letters, numbers, underscores, and periods. It must not end with a period or have consecutive periods. No internal whitespaces allowed. The @ prefix is optional.FACEBOOK must be 5 to 50 characters long and contain only letters, numbers, and periods. It must not have leading, trailing, or consecutive periods. No internal whitespaces allowed. The @ prefix is optional.ADDRESS can be any non-blank string.REMARK can be any non-blank string.TAG must contain at least one letter or number, and may include spaces, underscores, and hyphens.Note: A customer must have at least one contact method (p/PHONE, ig/INSTAGRAM, fb/FACEBOOK or a/ADDRESS). The command will fail and show an error message if all contact methods are missing.
Duplicate Handling: Customer names are unique (case-insensitive). For example, "John Doe" and "john doe" are considered the same customer, and the app will reject the duplicate entry.
Tip: If you have two customers with the same name, use descriptors to differentiate them (e.g. "John Doe (Clementi)" and "John Doe (Jurong)"). A customer can also have any number of tags (including 0).
Examples:
add n/John Doe p/98765432 ig/john a/John Street, Blk 123, #01-01 r/prefers weekend delivery t/VIP t/regularadd n/Betsy Crowe t/friend fb/betsy.crowe a/Blk 456, Bedok North r/allergic to peanutsadd n/Tech Corp SG p/67778888 ig/techcorp.sg a/Tech Tower, Level 12 r/Invoicing requirededitEdits an existing customer in the customer database.
Format: edit INDEX [n/NAME] [p/PHONE] [ig/INSTAGRAM] [fb/FACEBOOK] [a/ADDRESS] [r/REMARK] [t/TAG]…
INDEX. The index refers to the index number shown in the displayed customer list. The index must be a positive integer 1, 2, 3, …p/ clears phoneig/ clears Instagramfb/ clears Facebooka/ clears addressr/ clears remarkn/ (name) cannot be empty if present. Use n/NEW_NAME to change the name.p/, ig/, fb/, or a/). Otherwise, the edit is rejected.t/ clears all existing tags.Examples:
edit 1 p/91234567 a/John Street, Blk 123, #02-02 Edits the phone number and delivery address of the 1st customer to be 91234567 and John Street, Blk 123, #02-02 respectively.edit 2 n/Betsy Crower t/ Edits the name of the 2nd customer to be Betsy Crower and clears all existing tags.edit 3 ig/ r/ Clears Instagram and remark for the 3rd customer.edit 4 p/ fb/ ig/ a/ Fails if this would remove all contact methods from the 4th customer.findFinds customers whose details match the given keywords. You can search across all fields or target a specific field using prefixes.
Format: find KEYWORD
hans will match Hans.Han will match Hans.Examples:
find John returns john and John Doefind 99272758 returns Bernice Yu if her contact details contains these digits
Note: All text after find is treated as a single keyword. For example, find John Doe searches for the phrase “John Doe” as one keyword, not two separate keywords.
Format: find PREFIX/KEYWORD
hans will match Hans.Available Prefixes:
n/NAMEp/PHONEfb/FACEBOOKig/INSTAGRAMa/ADDRESSr/REMARKt/TAGExamples:
find n/Alice returns all customers whose name contains Alice.find t/regular returns all customers whose tags contain regular.find n/Bob r/non-spicy returns all customers whose name contains Bob and whose remark contains non-spicy.deleteDeletes the specified customer from the customer database.
Format: delete INDEX
INDEX.Note: All orders associated with the deleted customer will also be deleted.
Examples:
list followed by delete 2 deletes the 2nd customer in the address book.find Betsy followed by delete 1 deletes the 1st customer in the results of the find command.orderAdds a new order for a specific customer.
Format: order INDEX i/ITEM_NAME q/QUANTITY at/DELIVERY_TIME [a/DELIVERY_ADDRESS] [s/STATUS]
INDEX.ITEM_NAME must contain only alphanumeric characters and spaces, and cannot be blank.QUANTITY must be a positive integer 1, 2, 3, ….DELIVERY_TIME must be in yyyy-mm-dd hhmm format and must be a future date/time.DELIVERY_ADDRESS is not provided, the customer's stored address will be used.STATUS is not provided, it defaults to PREPARING. Valid statuses: PREPARING, READY, DELIVERED, CANCELLED.Tip: You can specify a/PICKUP for pickup orders.
Examples:
order 1 i/Pizza q/3 at/2026-06-02 1200order 2 i/Burger q/5 at/2026-07-15 1800 a/123 Jurong West St 42, #05-01order 3 i/Salad q/2 at/2026-08-10 1200 s/DELIVEREDfind-oSearch for different orders with 4 category options: item name, delivery address, customer id, status
Format: find-o Category-Type/Category-Keywords
Category-Keywords from the Category-Type.Examples:
find-o i/pizza - Look for orders with item keyword "pizza"find-o a/Ang Mo Kio - Look for orders with delivery address "Ang Mo Kio"find-o s/Delivered - Look for orders that are already deliveredfind-o i/burger a/Kent Ridge - Look for orders with item keyword "burger" and delivery address "Kent Ridge"edit-oUpdates fields of an existing order. Any field you specify replaces the previous value; other fields stay unchanged.
Format: edit-o ORDER_INDEX [i/ITEM_NAME] [q/QUANTITY] [at/DELIVERY_TIME] [a/DELIVERY_ADDRESS] [s/STATUS]
ORDER_INDEX. The index refers to the order number shown in the currently displayed order list. The index must be a positive integeri/, q/, at/, a/, or s/ must be provided. Omitting all of them is not allowed.order (see Adding an order above):
ITEM_NAME should contain only alphanumeric characters and spaces, and cannot be blank.QUANTITY must be a positive integer 1, 2, 3, ….DELIVERY_TIME must be in yyyy-mm-dd hhmm format and must be a future date/time.DELIVERY_ADDRESS is not provided, the customer's stored address will be used.STATUS is not provided, it defaults to PREPARING. Valid statuses: PREPARING, READY, DELIVERED, CANCELLED.Examples:
edit-o 2 q/5 — changes the quantity of the 2nd order in the list to 5.edit-o 1 s/READY — marks the first pizza order in the search results as ready.edit-o 1 i/Salad at/2026-05-01 1800 a/Blk 123 Main Street — updates item, delivery time, and address for the first order in the current list.delete-oDeletes the specific order from the order database.
Format: delete-o ORDER_INDEX
ORDER_INDEX.Examples:
list-o followed by delete-o 3 deletes the 3rd order in the results of the list-o command.find-o i/pizza followed by delete-o 1 deletes the 1st order in the results of the find-o command.BZNUS data is saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
BZNUS data is 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 makes its format invalid, BZNUS 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 BZNUS 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:
bznus.jar, then go to data/addressbook.json.addressbook.json to the same location on the new computer ([JAR file location]/data/) and replace the existing data 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] [fb/FACEBOOK] [ig/INSTAGRAM] [a/ADDRESS] [r/REMARK] [t/TAG]… e.g. add n/James Ho p/99996666 fb/james.Ho ig/james_Ho a/123, Clementi Rd, 1234665 r/extra spicy, no onion t/friend t/regular |
| Edit | edit INDEX [n/NAME] [p/PHONE_NUMBER] [fb/FACEBOOK] [ig/INSTAGRAM] [a/ADDRESS] [r/REMARK] [t/TAG]… e.g. edit 2 n/James Lee ig/jamesLee |
| Find | find KEYWORD [MORE_KEYWORDS] e.g. find James Jake Or find PREFIX/KEYWORD e.g. find fb/james or find ig/james_ho |
| List | list |
| Delete | delete INDEX e.g. delete 3 |
| Action | Format, Examples |
|---|---|
| Add Order | order INDEX i/ITEM_NAME q/QUANTITY at/DELIVERY_TIME [a/DELIVERY_ADDRESS] [s/STATUS] e.g. order 3 i/Pizza q/3 at/2026-04-02 1200 a/123 Jurong West St 42, #05-01 s/PREPARING |
| Find Order | find-o Category-Type/Category-Keywords e.g. find-o i/pizza |
| Edit Order | edit-o ORDER_INDEX [i/ITEM_NAME] [q/QUANTITY] [at/DATE] [a/DELIVERY_ADDRESS] [s/STATUS] e.g. edit-o 2 q/5 s/READY |
| List Orders | list-o |
| Delete Order | delete-o ORDER_INDEX e.g. delete-o 1 |
| Action | Format, Examples |
|---|---|
| Help | help |
| Clear | clear |
| Exit | exit |