Thank you for choosing CaféConnect to streamline your café management experience. With so many details to track in a busy café environment, managing customers, staff, and inventory becomes a real challenge. CaféConnect is here to keep you organized and focused on what matters most—providing excellent service to your customers.
Use CaféConnect to bring efficiency to your café management!
What is CaféConnect?
CaféConnect is a streamlined desktop application that helps you manage customers, staff, and your drink menu all in one place.
Because countless other café owners and managers already do!
If you're a café owner who values efficiency, can type quickly, and wants to streamline your operations, CaféConnect is the perfect solution for you!
Managing café operations efficiently is crucial for success—that's why we created CaféConnect. Our application streamlines three core aspects into three beautiful tabs:
1. Staff Tab
Manage staff efficiently to build a strong team!
Staff Tab: manage staff information
2. Customers Tab
Remember your customers with ease, and see them smile!
Customer Tab: manage customer information
3. Drinks Tab
Browse your drink catalog for the perfect cup!
Drinks Tab: manage drink offerings
First time using CaféConnect? Don't worry! We've got you covered! This guide will help maximize your usage of CaféConnect.
Getting Around This Guide
Note boxes provide important information that you should take note of.
Note: This is a Note box.
Warning boxes highlight potential errors and serve as precautions against incorrect usage.
Warning: This is a warning box.
helpcustomeradd or caquickcustomeradd or qcacustomerdelete or cdcustomeredit or cecustomerfind or cfstaffadd or saquickstaffadd or qsastaffdelete or sdstaffedit or sestafffind or sfdrinkadd or dadrinkdelete or ddpurchase or pqp shortcutThis section has two parts: complete Part 1 once, and repeat Part 2 each time you wish to use CaféConnect.
Ensure that you have Java 17 or above installed on your computer for the CaféConnect application to run. If not, download the latest version of Java from their website.
Download cafeconnect.jar file from our GitHub.
Create a new folder and name it any name you want (e.g. CafeConnect).
Find the downloaded cafeconnect.jar file and drag it into the folder you created in step 3.
For steps 5 and 6, refer to either Mac Users or Windows Users section that matches your computer system. Continue to Using the terminal after completing steps 5 and 6.
You will see a window like this.
cafeconnect.jar file and select Get Info.
On the new window that pops up, right click on Where and copy the file path.
Open.
You will see a window like this.
Type cd FILEPATH (replacing FILEPATH with the actual file path copied in step 6) and press Enter.
Type java -jar cafeconnect.jar and press Enter to run the CaféConnect application.
The CaféConnect welcome screen will appear in a few seconds, displaying the application title and navigation options.
CaféConnect Welcome Screen
Staff & Customer Management
Initial Staff Screen
Drinks Menu
Initial Drinks Menu
Note: The application comes with sample data to help you get started.
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:
help : Opens the help window with the command guide.
customeradd cid/C001 n/John Doe p/98765432 e/johnd@example.com a/John street, block 123, #01-01 rp/150 vc/8 fi/Cappuccino ts/120 : Adds a customer named John Doe to CaféConnect.
staffadd sid/S1001 n/Alice Tan p/81234567 e/alice@example.com a/123, Jurong West Ave 6, #08-111 role/Barista shift/9am-5pm hours/40 rating/4.5 : Adds a staff member named Alice Tan to CaféConnect.
purchase 1 n/Espresso : Records a purchase of Espresso for the 1st customer in the list.
customerdelete 3 : Deletes the 3rd customer shown in the current customer list.
qca C0102:Charlie:97285712 : Quickly adds a customer.
exit : Exits the app.
Refer to the Features below for details of each command. Be sure to check the Understanding Command Syntax section to understand how to properly enter commands in CaféConnect.
Let's start with a simple example to understand how commands work in CaféConnect:
help- This is a basic command that opens the help window.
Breaking this down:
help, are simple and don't need any additional information.Let's look at a more complex example:
customeradd cid/C001 n/John Doe
In this example:
customeradd is the command.cid/C001 and n/John Doe are parameters.cid/, n/) that tells CaféConnect what kind of information follows.Commands are case-insensitive - HELP, help, and Help all work the same way.
Parameters shown in UPPER_CASE are placeholders that you need to replace with actual values:
cid/CUSTOMER_ID n/NAME have placeholders CUSTOMER_ID and NAME.
customeradd cid/C0001 n/John Doe- "C0001" replaces CUSTOMER_ID, "John Doe" replaces NAME
Required parameters (must be included) are shown without square brackets:
customeradd cid/CUSTOMER_ID n/NAME p/PHONE means ID, name, and phone are required.Optional parameters are shown in square brackets []:
[t/TAG] means you can add a tag or leave it out.
customeradd cid/C0001 n/John Doe t/regular- Here, "regular" is an optional tag that was added
Some parameters can be repeated (shown with …):
[t/TAG]… means you can add multiple tags or none at all.
customeradd cid/C0001 n/John Doe t/regular t/vip- Here, both "regular" and "vip" are optional tags that were added
Important note about tags: When adding tags during creation (e.g., customeradd), you can add multiple tags as shown above. However, when editing tags (e.g., customeredit), all existing tags are replaced with the new ones you specify. Adding tags is not cumulative during editing.
Duplicate prefixes: If you add more than one of each required prefix (e.g., two n/ prefixes), the command will be treated as invalid.
For most commands, you can enter parameters in any order:
n/John Doe p/98765432 works the same as p/98765432 n/John DoeQuick commands (like quickcustomeradd) need parameters in a specific order:
quickcustomeradd C001:John Doe:98765432 must be in ID:Name:Phone order
quickcustomeradd C001:John Doe:98765432- Here, "C001" is the CUSTOMER_ID, "John Doe" is the NAME, and "98765432" is the PHONE
To make typing easier, CaféConnect provides alias for common commands:
Customer Management:
ca instead of customeraddcd instead of customerdeletecf instead of customerfindStaff Management:
sa instead of staffaddsd instead of staffdeletesf instead of stafffindDrink Management:
da instead of drinkadddd instead of drinkdeletePurchase Operations:
p instead of purchaseqp instead of quickpurchaseIf you're using a PDF version of this guide, be careful when copying commands that span multiple lines. Some spaces might be lost when copying to the application.
Before using any commands, make sure you understand the Understanding Command Syntax rules that apply to all commands in CaféConnect.
staffadd, staffdelete, etc.), the interface will automatically switch to the Staff tab.customeradd, customerdelete, etc.), the interface will automatically switch to the Customers tab.drinkadd, drinkdelete, etc.), the interface will automatically switch to the Drinks tab.stafffind all/true - Switch to Staff tab and view all staffcustomerfind all/true - Switch to Customers tab and view all customersdrinkfind all/true - Switch to Drinks tab and view all drinkshelpShows a message explaining how to access the help page.
Format: help
customeradd or caAdds a customer to the customer list with required details such as customer ID, name, phone, email, address, reward points, visit count, favourite item, and total spent.
Format: customeradd cid/CUSTOMER_ID n/NAME p/PHONE e/EMAIL a/ADDRESS rp/REWARD_POINTS vc/VISIT_COUNT fi/FAVOURITE_ITEM ts/TOTAL_SPENT [t/TAG] [r/REMARK]…
CUSTOMER_ID should start with a 'C' (case-insensitive) followed by digits, e.g., C1001, c1001, and must not be longer than 10 characters. Duplicate customer IDs are not allowedSTAFF_ID input. e.g. S00045 will be treated as S45NAME should only contain alphanumeric characters and spaces, and it should not be blank and must not be longer than 50 charactersPHONE should only contain digits, and it should be between 3 and 20 digits longEMAIL must be a valid email address.ADDRESS can take any value, and it should not be blank and must not be longer than 100 charactersREWARD_POINTS should only contain digitsVISIT_COUNT should only contain digitsFAVOURITE_ITEM can take any value, and it should not be blank and must not be longer than 30 charactersTOTAL_SPENT should be a non-negative number with at most one decimal point and either one or two decimal places, representing the amount in dollarsREMARK can take any value up to 50 characters, optional fieldTAG can take any alphanumeric value, but should not contain spaces, optional fieldExamples:
customeradd cid/C004 n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 rp/150 vc/8 fi/Cappuccino ts/120 t/regular t/vip r/Handsomeca cid/C002 n/Betsy Crowe p/1234567 e/betsycrowe@example.com a/Newgate Prison rp/300 vc/15 fi/Mocha ts/250 t/vip t/regularThese are the before and after images of the first example
Before adding the customer
After adding the customer
quickcustomeradd or qcaA quick way to add customer members with minimal required information.
Format: quickcustomeradd <CUSTOMER_ID>:<NAME>:<PHONE>
CUSTOMER_ID should start with a 'C' (case-insensitive) followed by digits, e.g., C1001, c1001, and must not be longer than 10 characters. Duplicate customer IDs are not allowedNAME should only contain alphanumeric characters and spaces, and it should not be blank and must not be longer than 50 charactersPHONE should only contain digits, and it should be between 3 and 20 digits longEmail: default@gmail.comAddress: emptyReward Points: 0Visit Count: 1Favourite Item: emptyTotal Spent: 0Remark: "From quickcustomeradd. Edit with customeredit."Examples:
quickcustomeradd C0102:Charlie:97285712qca C0103:Bob:80192832These are the before and after images of the first example
Before adding the customer
After adding the customer
customerdelete or cdDeletes the specified customer from CaféConnect.
Format: customerdelete INDEX
INDEX.INDEX refers to the index number shown in the displayed customer list.INDEX must be a positive integer 1, 2, 3, …INDEX must be a valid index number (e.g. 5 is not valid when there is less than five customers in the displayed list).Examples:
customerdelete 2 deletes the 2nd customer in the customer list.cd 4 when you only have three customers returns an error message.These are the before and after images of the first example
Before deleting the customer
After deleting the customer
customeredit or ceEdits the details of an existing customer in the customer list.
Format: customeredit INDEX [cid/CUSTOMER_ID] [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG] [r/REMARK]...
INDEX.INDEX refers to the index number shown in the displayed customer list.INDEX must be a positive integer 1, 2, 3, …INDEX must be a valid index number (e.g., 5 is not valid when there are fewer than five customers in the displayed list).t/ without specifying any tags after it.Examples:
customeredit 1 p/99994567 e/newemail@example.com edits the phone number and email address of the 1st customer to be 99994567 and newemail@example.com respectively.ce 2 n/Betsy Crower rp/5000 t/ edits the name of the 2nd customer to be Betsy Crower, updates their reward points to 5000, and clears all existing tags.These are the before and after images of the first example
Before editing customer details
After editing customer details
customerfind or cfFinds and lists all customers in the customer list whose names contain any of the specified keywords. The search is case-insensitive, meaning it will match names regardless of letter casing.
Format: customerfind [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [cid/CUSTOMER_ID] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG]...
Format: customerfind all/true (to list all customers)
NAME should contain at least 3 characters, or the command may not work as expected.all/true.[n/NAME] do not need to match the full name exactly; partial matches within the name are included. For example, searching n/john doe will match John Doe, John Tan, or Jane Doe.ali can find Alice, but al might not match successfully.[n/NAME] will return close matches as well. For example, searching for n/all will match ali.[n/NAME] is case-insensitive. For example, searching for alice will match Alice, ALICE, or aLiCe.[p/PHONE] [e/EMAIL] [a/ADDRESS] [cid/CUSTOMER_ID] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG] MUST match the field exactly and is case-sensitive. For example , searching fi/Cappuccin will return nothing if drink should be fi/Cappucino; searching fi/latte will return nothing if drink should be fi/Lattecustomerfind all/true or cf all/true to display the complete list of all customers in CaféConnect.Examples:
customerfind n/Alice or cf n/Alice finds and lists all customers whose names contain Alice.
customerfind n/John Doe or cf n/John Doe finds and lists all customers whose names contain either John or Doe.
customerfind fi/Latte or cf fi/Latte finds and lists all customers who has favourite item Latte
customerfind vc/8 or cf vc/8 finds and lists all customers who has Visit Count of 8.
customerfind all/true or cf all/true lists all customers in CaféConnect.
These are the before and after images of the second example
Before searching for a customer
After searching for a customer
staffadd or saAdds a staff to the staff list with required details such as staff ID, name, phone, email, address, role, shift, hours worked, and performance rating.
Format: staffadd sid/STAFF_ID n/NAME p/PHONE e/EMAIL a/ADDRESS role/ROLE shift/SHIFT_TIMING hours/HOURS_WORKED rating/PERFORMANCE_RATING [t/TAG] [r/REMARK]...…
STAFF_ID should start with an 'S' (case-insensitive) followed by digits (e.g., S1001, s1001) and must not exceed 10 characters. Duplicate staff IDs are not allowed.STAFF_ID input. e.g. S00045 will be treated as S45NAME should only contain alphanumeric characters and spaces, and it should not be blank and must not be longer than 50 charactersPHONE should only contain digits, and it should be between 3 and 20 digits longEMAIL must be a valid email addressADDRESS can take any value, and it should not be blank and must not be longer than 100 charactersROLE can take any value, and it should not be blank and must not be longer than 50 charactersSHIFT_TIMING can take any value, and it should not be blank and must not be longer than 50 charactersHOURS_WORKED should only contain digitsPERFORMANCE_RATING should only contain digits, and it should be between 0 to 5.0 (inclusive) with at most one decimal placeREMARK can take any value up to 50 characters, optional fieldTAG can take any alphanumeric value, but should not contain spaces, optional fieldExamples:
staffadd sid/S1234 n/Alice Tan p/81234567 e/alice@example.com a/123, Jurong West Ave 6, #08-111 role/Barista shift/9am-5pm hours/40 rating/4.5 t/fullTime t/experienced r/Prettysa sid/S0101 n/Bob Lim p/82019292 e/bob@example.com a/123, Tampines West Ave 7, #09-121 role/Barista shift/5pm-11pm hours/30 rating/4.5 t/fullTime r/HandsomeThese are the before and after images of the first example
Before adding the staff
After adding the staff
quickstaffadd or qsaA quick way to add staff with minimal required information.
Format: quickstaffadd <STAFF_ID>:<NAME>:<PHONE>
STAFF_ID should start with an 'S' (case-insensitive) followed by digits (e.g., S1001, s1001) and must not exceed 10 characters. Duplicate staff IDs are not allowedNAME should only contain alphanumeric characters and spaces, and it should not be blank and must not be longer than 50 charactersPHONE should only contain digits, and it should be between 3 and 20 digits longEmail: default@gmail.comAddress: emptyRole: emptyShift Timing: emptyHours Worked: 0Performance Rating: 0Remark: "From quickstaffadd. Edit with staffedit."Examples:
quickstaffadd S0102:Ali:98291029qsa S0103:Bali:89201029These are the before and after images of the first example
Before adding the staff
After adding the staff
staffdelete or sdDeletes the specified staff from the address book.
Format: staffdelete INDEX
INDEX.INDEX refers to the index number shown in the displayed staff list.INDEX must be a positive integer 1, 2, 3, …INDEX must be a valid index number (e.g. 5 is not valid when there is less than five staff in the displayed list).Examples:
staffdelete 2 deletes the 2nd staff in the address book.sd 4 when you only have three staff returns an error message.These are the before and after images of the first example
Before deleting the staff
After deleting the staff
staffedit or seEdits the details of an existing staff in the staff list.
Format: staffedit INDEX [sid/STAFF_ID] [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG] [r/REMARK]...
INDEX.INDEX refers to the index number shown in the displayed staff list.INDEX must be a positive integer 1, 2, 3, …INDEX must be a valid index number (e.g., 5 is not valid when there are fewer than five staff members in the displayed list).t/ without specifying any tags after it.Examples:
staffedit 1 p/99994567 e/newemail@example.com edits the phone number and email address of the 1st staff to be 99994567 and newemail@example.com respectively.se 2 n/Betsy Crower sid/S002 t/ edits the name of the 2nd staff to be Betsy Crower, changes the staff ID to S002, and clears all existing tags.These are the before and after images of the first example
Before editing staff details
After editing staff details
stafffind or sfFinds and lists all staffs in the staff list whose names contain any of the specified keywords. The search is case-insensitive, meaning it will match names regardless of letter casing.
Format: stafffind [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [sid/STAFF_ID] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG]...
Format: stafffind all/true (to list all staff)
NAME should contain at least 3 characters, or the command may not work as expected.all/true.[n/NAME] do not need to match the full name exactly; partial matches within the name are included. For example, searching n/john doe will match John Doe, John Tan, or Jane Doe.ali can find Alice, but al might not match successfully.[n/NAME] is case-insensitive. For example, searching for alice will match Alice, ALICE, or aLiCe.n/all will match ali.[p/PHONE] [e/EMAIL] [a/ADDRESS] [sid/STAFF_ID] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG] MUST match the field exactly and is case-sensitive. For example , searching role/Barist will return nothing if role should be role/Barista; searching role/chef will return nothing if role should be role/Chefstafffind all/true or sf all/true to display the complete list of all staff in CaféConnect.Examples:
stafffind n/Alice or sf n/Alice finds and lists all staffs whose names contain Alice.stafffind n/John Doe or sf n/John Doe finds and lists all staffs whose names contain either John or Doe.stafffind role/Chef or sf role/Chef finds and lists all staffs whose role is Chef.stafffind hours/10 or sf hours/10 finds and lists all staffs who have Hours Worked of 10.stafffind all/true or sf all/true lists all staffs in CaféConnect.These are the before and after images of the second example
Before searching for a staff
After searching for a staff
drinkadd or daAdds a new drink to the drink catalog with details such as name, price, and category.
Format: drinkadd n/NAME p/PRICE c/CATEGORY
NAME is the name of the drinkPRICE should be a positive number with up to 2 decimal places and must be at least $0.01.CATEGORY is the classification of the drink (e.g., Coffee, Tea, etc.)Examples:
drinkadd n/Iced Latte p/4.50 c/Coffee adds an Iced Latte under the Coffee category with a price of $4.50da n/Chai Tea p/3.80 c/Tea adds a Chai Tea under the Tea category with a price of $3.80These are the before and after images of the first example
Before adding the drink
After adding the drink
drinkdelete or ddDeletes the specified customer from CaféConnect.
Format: drinkdelete INDEX
INDEX.INDEX refers to the index number shown in the displayed drink list.INDEX must be a positive integer 1, 2, 3, …INDEX must be a valid index number (e.g. 5 is not valid when there is less than five drinks in the displayed list).Examples:
drinkdelete 1 deletes the 1st drink in the drink list.dd 4 when you only have three drinks returns an error message.These are the before and after images of the first example
Before deleting the drink
After deleting the drink
purchase or pRecords a purchase for a customer, updating their total spent, visit count, and reward points. Optionally, allows users to redeem reward points to pay for the purchase.
Format: purchase INDEX n/DRINK_NAME [redeem/true]
INDEX.INDEX refers to the index number shown in the displayed customer list.INDEX must be a positive integer 1, 2, 3, …INDEX must be a valid index number (e.g., 5 is not valid when there are fewer than five customers in the displayed list).DRINK_NAME must match a drink that exists in the drink catalog.redeem/true):
Examples:
purchase 1 n/Espresso records a regular purchase of an Espresso for the 1st customer, updating their total spent and adding reward points.p 2 n/Cappuccino redeem/true redeems a Cappuccino for the 2nd customer using their reward points.These are the before and after images of a standard purchase using the first example
Before standard purchase
After standard purchase (points added and total spent increased)
These are the before and after images of a redemption purchase using the second example
Before redemption purchase
After redemption purchase (points deducted, total spent unchanged)
quickpurchase or qpA quick way to record purchases with minimal required information.
Format: quickpurchase INDEX:DRINK_NAME[:r]
INDEX.DRINK_NAME must match a drink that exists in the drink catalog.:r at the end to indicate this is a redemption purchase using reward points.:r, it will be processed as a standard purchase.Examples:
quickpurchase 1:Espresso records a regular purchase of an Espresso for the 1st customer.qp 1:Espresso:r redeems an Espresso for the 1st customer using reward points.These are the before and after images of a standard quick purchase using the first example
Before standard purchase
After standard purchase (points added and total spent increased)
These are the before and after images of a redemption quick purchase using the second example
Before redemption purchase
After redemption purchase (points deducted, total spent unchanged)
exitExits the program.
Format: exit
CaféConnect data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.
CaféConnect data are saved automatically in the following JSON files:
[JAR file location]/data/addressbook.json[JAR file location]/data/drinkcatalog.json[JAR file location]/preferences.jsonAdvanced users are welcome to update data directly by editing these data files.
Caution:
If your changes to any data file makes its format invalid, CaféConnect will discard all data in that file and start with an empty data file at the next run. Hence, it is recommended to take a backup of the files before editing them.
Furthermore, certain edits can cause CaféConnect to behave in unexpected ways (e.g., if a value entered is outside the acceptable range for the address book, drink catalog, or user preferences). Therefore, edit the data files only if you are confident that you can update them correctly.
Get your questions or doubts about CaféConnect's functionality and details answered here. If you have further questions, you can contact us through our email cafeconnect@gmail.com.
Ans: CaféConnect's data is saved automatically as JSON files [JAR file location]/data/addressbook.json for customer and staff data, [JAR file location]/data/drinkcatalog.json for drink catalog data, and [JAR file location]/preferences.json for user preferences. You can make a backup of these files if you wish to.
Ans: Install CaféConnect on the other computer. Then copy and replace the following files from your current installation to the new one:
[JAR file location]/data/addressbook.json (for customer and staff data)[JAR file location]/data/drinkcatalog.json (for drink catalog data)[JAR file location]/preferences.json (for user preferences)Ans: You are strongly encouraged to not edit the JSON data files directly. You can use the commands as mentioned above to manage any data. Should the changes made to the data files cause the format to be invalid, CaféConnect will discard all data and start with an empty data file. It is highly recommended to make a copy of the data files before editing them.
Users should only edit the data files only if they are confident in updating them correctly.
Ans: Data entries are valid as long as it follows the data entry rules enforced by the application, and are achievable using the available commands.
Examples:
Having C001 is an invalid customerId field for a customer, if it's already assigned to another customer, as there is no sequence of commands that will lead to duplicate customer IDs.
Having regular is a valid tag field for a customer, as the user can customeradd a customer and add the tag via t/regular.
Ans: Currently, customers earn 10 points for every $1 spent on purchases. Points are automatically updated when you record a purchase using the purchase command.
Ans: CaféConnect doesn't have a built-in expiration for reward points. Points accumulate indefinitely until used.
Ans: The system will display an error message indicating that the drink was not found in the catalog.
Ans: New entries will not be inserted in any specific order. They are inserted to the bottom of the list.
Ans: Yes, all changes to customer or staff data are immediately reflected in the UI. The information panels will update to show the current state of your data.
Ans: Yes, you can use the quick version of these commands:
qca C0102:Charlie:97285712qsa S0102:Ali:98291029In fact, the corresponding quick version works for purchases made:
qp 1:Latteqp 1:Latte:rQuick commands streamline operations by minimizing keystrokes and simplifying syntax, making them ideal for fast-paced café environments.
Ans: Currently, CaféConnect doesn't support direct importing from spreadsheet files. You'll need to enter customer and staff data manually.
Ans: Use the staffedit command to edit worked hours to a staff member's record.
Ans: Yes, the visit count can be edited via the customeredit.
stafffind or customerfind returns no resultsAns: Use the stafffind all/true command to show all staff, or customerfind all/true to show all customers again.
Ans: Use the stafffind all/true command to switch to the staff tab, or customerfind all/true to switch back to the customer tab.
If you are facing problems while setting up or using CaféConnect, we want to help you. This section covers some of the common problems and ways to solve them.
Check that you have the cafeconnect.jar in the correct folder and copied the correct file path into the terminal. Check that you have Java 17 or above installed on your computer. Follow the correct set of instructions based on your operating system.
customeradd vs customradd)n/ for name)fi/ or role/), check for exact spelling and capitalizationcustomerfind all/true or stafffind all/true to reset the view/data folder aren't marked as read-onlyMultiple Screens: 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.
Help Window Visibility: If you minimize the Help Window and then run the help command (or use the Help menu, or the keyboard alias 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.
Search Limitations: Very short search strings (less than 3 characters) may not always produce expected results. Use longer search terms for more reliable searching.
UI Scaling: On high-DPI displays, some UI elements may appear too small or improperly scaled. Adjusting your system's display scaling settings may help.
Long-running Commands: Commands that process large amounts of data (like searching through many entries) may cause the UI to become temporarily unresponsive. This is normal behavior, and the application should become responsive again once the operation completes.
Special Characters: Using special characters in names, addresses, or other fields is often not allowed. Even if possible, these may cause display issues or unexpected behavior in some cases. Stick to standard alphanumeric characters when possible.
Memory Usage: After extended use with many customer/staff entries, the application may use more memory than expected. Restarting the application periodically can help maintain optimal performance.
| Command | Format | Examples |
|---|---|---|
| Add Customer | customeradd cid/CUSTOMER_ID n/NAME p/PHONE e/EMAIL a/ADDRESS rp/REWARD_POINTS vc/VISIT_COUNT fi/FAVOURITE_ITEM ts/TOTAL_SPENT [r/REMARK] [t/TAG]… | customeradd cid/C001 n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 rp/150 vc/8 fi/Cappuccino ts/120 r/Handsome t/regular |
| Add Customer (Alias) | ca cid/CUSTOMER_ID n/NAME p/PHONE e/EMAIL a/ADDRESS rp/REWARD_POINTS vc/VISIT_COUNT fi/FAVOURITE_ITEM ts/TOTAL_SPENT [r/TAG] [t/TAG]… | ca cid/C001 n/John Doe p/98765432 e/johnd@example.com a/311, Clementi Ave 2, #02-25 rp/150 vc/8 fi/Cappuccino ts/120 r/Handsome t/regular |
| Quick Add Customer | quickcustomeradd <CUSTOMER_ID>:<NAME>:<PHONE> | quickcustomeradd C0102:Charlie:97285712 |
| Quick Add Customer (Alias) | qca <CUSTOMER_ID>:<NAME>:<PHONE> | qca C0102:Charlie:97285712 |
| Delete Customer | customerdelete INDEX | customerdelete 2 |
| Delete Customer (Alias) | cd INDEX | cd 2 |
| Edit Customer | customeredit INDEX [cid/CUSTOMER_ID] [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG]... | customeredit 1 p/99994567 e/newemail@example.com |
| Edit Customer (Alias) | ce INDEX [cid/CUSTOMER_ID] [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG]... | ce 1 p/99994567 e/newemail@example.com |
| Find Customer | customerfind [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [cid/CUSTOMER_ID] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG]... | customerfind n/John Doe |
| Find Customer (Alias) | cf [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [cid/CUSTOMER_ID] [rp/REWARD_POINTS] [vc/VISIT_COUNT] [fi/FAVOURITE_ITEM] [ts/TOTAL_SPENT] [t/TAG]... | cf n/John Doe |
| List All Customers | customerfind all/true | - |
| List All Customers (Alias) | cf all/true | - |
| Add Staff | staffadd sid/STAFF_ID n/NAME p/PHONE e/EMAIL a/ADDRESS role/ROLE shift/SHIFT_TIMING hours/HOURS_WORKED rating/PERFORMANCE_RATING [r/REMARK] [t/TAG]... | staffadd sid/S1234 n/Alice Tan p/81234567 e/alice@example.com a/123, Jurong West Ave 6, #08-111 role/Barista shift/9am-5pm hours/40 rating/4.5 r/Best Barista t/fullTime |
| Add Staff (Alias) | sa sid/STAFF_ID n/NAME p/PHONE e/EMAIL a/ADDRESS role/ROLE shift/SHIFT_TIMING hours/HOURS_WORKED rating/PERFORMANCE_RATING [r/REMARK] [t/TAG]... | sa sid/S1234 n/Alice Tan p/81234567 e/alice@example.com a/123, Jurong West Ave 6, #08-111 role/Barista shift/9am-5pm hours/40 rating/4.5 r/Best Barista t/fullTime |
| Quick Add Staff | quickstaffadd <STAFF_ID>:<NAME>:<PHONE> | quickstaffadd S0102:Ali:98291029 |
| Quick Add Staff (Alias) | qsa <STAFF_ID>:<NAME>:<PHONE> | qsa S0102:Ali:98291029 |
| Delete Staff | staffdelete INDEX | staffdelete 2 |
| Delete Staff (Alias) | sd INDEX | sd 2 |
| Edit Staff | staffedit INDEX [sid/STAFF_ID] [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG]... | staffedit 1 p/99994567 e/newemail@example.com |
| Edit Staff (Alias) | se INDEX [sid/STAFF_ID] [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG]... | se 1 p/99994567 e/newemail@example.com |
| Find Staff | stafffind [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [sid/STAFF_ID] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG]... | stafffind n/Alice |
| Find Staff (Alias) | sf [n/NAME] [p/PHONE] [e/EMAIL] [a/ADDRESS] [sid/STAFF_ID] [role/ROLE] [shift/SHIFT_TIMING] [hours/HOURS_WORKED] [rating/PERFORMANCE_RATING] [t/TAG]... | sf n/Alice |
| List All Staff | stafffind all/true | - |
| List All Staff (Alias) | sf all/true | - |
| Add Drink | drinkadd n/NAME p/PRICE c/CATEGORY | drinkadd n/Iced Latte p/4.50 c/Coffee |
| Add Drink (Alias) | da n/NAME p/PRICE c/CATEGORY | da n/Iced Latte p/4.50 c/Coffee |
| Delete Drink | drinkdelete INDEX | drinkdelete 1 |
| Delete Drink (Alias) | dd INDEX | dd 1 |
| Purchase | purchase INDEX n/DRINK_NAME [redeem/true] | purchase 1 n/Espresso or purchase 2 n/Cappuccino redeem/true |
| Purchase (Alias) | p INDEX n/DRINK_NAME [redeem/true] | p 1 n/Espresso or p 2 n/Cappuccino redeem/true |
| Quick Purchase | quickpurchase INDEX:DRINK_NAME[:r] | quickpurchase 1:Espresso or quickpurchase 2:Cappuccino:r |
| Quick Purchase (Alias) | qp INDEX:DRINK_NAME[:r] | qp 1:Espresso or qp 2:Cappuccino:r |
| Switch to Staff Tab | stafffind all/true | - |
| Switch to Customers Tab | customerfind all/true | - |
| Switch to Drinks Tab | drinkfind all/true | - |
| Help | help | - |
| Term | Definition |
|---|---|
| Action | The task carried out by the CaféConnect application such as Add, Delete, Edit entries. |
| Alphanumeric | Consisting of both letters and numbers. |
| Command | The input the user types into the CaféConnect application's command box to carry out a particular action. |
| Command Box | The input bar at the bottom of the CaféConnect application which allows users to type in a string command. |
| Command Line Interface (CLI) | An interface that the user interacts with by typing text commands instead of using a mouse to click on buttons or icons. |
| Customer ID | A unique identifier for each customer in the system, starting with 'C' followed by digits (e.g., C001). |
| Favourite Item | A drink or food item that a particular customer frequently orders or prefers. |
| Graphical User Interface (GUI) | An interface that the user interacts with using visual elements like buttons, icons and windows. |
| Home Folder | The Folder that the CaféConnect Application is located when run from the command line. |
| Index | The application number of the customer or staff displayed in the list. |
| Jar | The file format used for the CaféConnect application. |
| JDK | JDK stands for Java Development Kit, and it's a software development environment used for developing applications and applets using the Java programming language. |
| JSON | A lightweight data-interchange format that is easy for humans to read and write. |
| Parameter | Additional information required by a command to perform its action. |
| Performance Rating | A numeric value between 0 and 5.0 that represents a staff member's performance evaluation. |
| Prefix | A short identifier (e.g., n/, p/) that indicates what type of information follows in a command. |
| Redemption | Using accumulated reward points to pay for a purchase instead of cash. |
| Reward Points | Points earned by customers with each purchase that can be redeemed for future purchases. |
| Shift Timing | The working hours of a staff member (e.g., "9am-5pm"). |
| Staff ID | A unique identifier for each staff member in the system, starting with 'S' followed by digits (e.g., S001). |
| Tab | A section of the CaféConnect interface that organizes related information (Staff, Customers, or Drinks Menu). |
| Tag | An optional label that can be attached to a customer or staff entry for easy categorization. |
| Total Spent | The cumulative amount a customer has spent at the café, excluding redemption purchases. |
| Visit Count | The number of times a customer has visited the café, including both standard purchases and redemptions. |
We would like to acknowledge the following contributions:
We started with a general AB3 user guide template and adapted it to the functional requirements of CaféConnect. We also used MarkBind which is a third party library to generate a dynamic user guide website from Markdown text.
AI tools such as ChatGPT were also used to check for grammatical errors.