bobaBot is a cheap & easy-to-use desktop application for managing bubble tea shop customers’ membership details.

bobaBot offers simple adding, enquiring, and maintaining of customer information. It features a membership rewards system, fuzzy search, and undo / redo function. It is optimised for staffs who prefer to type fast.

If you are a cashier working at a bubble tea shop, bobaBot can help you easily find and manage your customers’ membership information as compared to other GUI applications.


Table of Contents

  1. Quick start
  2. Features 2.1. Add
    2.2. Edit
    2.3. Increase
    2.4. Decrease
    2.4. List
    2.6. Find
    2.7. Delete
    2.8. Undo
    2.9. Redo
    2.10. Clear
    2.11. Calculate
    2.12. Calculator
    2.13. Help
    2.14. Exit
  3. FAQ
  4. Command summary
  5. List of Terminologies

1. Quick start

  1. Ensure you have Java 11 or above installed in your Computer.

  2. Download the latest bobaBot.jar from here.

  3. Decide where do you want your home folder and copy the downloaded file to it.

  4. Double-click the file to start the app. The GUI similar to the below should appear in a few seconds. Note how the app contains some sample information.
    Ui

  1. 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 e/johnd@example.com m/1 r/0 : Adds a customer named John Doe to bobaBot.

    • delete p/98765432 : Deletes the customer with the corresponding phone number (aka John Doe).

    • clear : Deletes all customers.

    • exit : Exits the app.

  2. Scroll down on the Customer list and Promotion list to see all the customers and on-going promotions.

  3. Refer to the Command summary below for a quick overview of commands.

  4. Refer to the Features below for details of each command.

  5. Before starting a trial run, clear the sample information using clear command and add your actual customer information.


2. Features

:information_source: Notes about the command format:

  • Command words are CASE_SENSITIVE and should all be in lower-case.
    e.g. add instead of ADD, Add, aDd,…, using non lower-case command words will result in command being not recognised.

  • 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/member 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/member, t/member t/gold 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.

  • If a parameter is expected only once in the command but you specified it multiple times, only the last occurrence of the parameter will be taken.
    e.g. if you specify p/12341234 p/56785678, only p/56785678 will be taken.

  • 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.

2.1 Adding a Customer: add

Adds a Customer to bobaBot.

Format: add n/NAME p/PHONE_NUMBER e/EMAIL m/BIRTHDAY_MONTH r/REWARD [t/TAG]…

:bulb: Tip: A customer can have any number of tags (including 0)

Examples:

  • add n/John Doe p/98765432 e/johnd@example.com m/1 r/0
    Walk-through with Images Before executing the AddCommand:

    After executing the AddCommand:

  • add n/Charlie Puth p/81234567 e/charlie@puth.com r/3000 t/silver m/12
    Walk-through with Images Before executing the AddCommand:

    After executing the AddCommand:

2.2 Editing a Customer’s details: edit

Edits an existing Customer in bobaBot.

Format: edit p/PHONE_NUMBER OR edit e/EMAIL [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [r/REWARD] [t/TAG]…​

:bulb: Tip: At least one of the optional fields must be provided

Examples:

  • edit p/81234567 p/88888888
    Walk-through with Images Before executing the EditCommand via PHONE_NUMBER:

    After executing the EditCommand via PHONE_NUMBER:

  • edit e/charlie@puth.com e/taylor@swift.com
    Walk-through with Images Before executing the EditCommand via EMAIL:

    After executing the EditCommand via EMAIL:

2.3 Increasing a Customer’s Reward points: incr

Increases the Reward points of existing Customer in bobaBot.

Format: incr INCREMENT_VALUE p/PHONE_NUMBER OR incr INCREMENT_VALUE e/EMAIL

Examples:

  • incr 100 p/88888888
    Walk-through with Images Before executing the IncreaseCommand via PHONE_NUMBER:

    After executing the IncreaseCommand via PHONE_NUMBER:

  • incr 1000 e/alexyeoh@example.com
    Walk-through with Images Before executing the IncreaseCommand via EMAIL:

    After executing the IncreaseCommand via EMAIL:

2.4 Decreasing a Customer’s Reward points: decr

Decreases the Reward points of existing Customer in bobaBot.

Format: decr DECREMENT_VALUE p/PHONE_NUMBER OR decr DECREMENT_VALUE e/EMAIL

Examples:

  • decr 200 p/87438807
    Walk-through with Images Before executing the IncreaseCommand via PHONE_NUMBER:

    After executing the IncreaseCommand via PHONE_NUMBER:

  • decr 500 e/taylor@swift.com
    Walk-through with Images Before executing the IncreaseCommand via EMAIL:

    After executing the IncreaseCommand via EMAIL:

2.5 Listing all customers : list

Shows a list of all Customers in bobaBot.

Format: list

Walk-through with Images Before executing the ListCommand:

After executing the ListCommand:

2.6 Locating customers by name / email / phone number: find

Finds Customers whose information (including name, phone, email, address) contain any of the given keywords.

Format: find KEYWORD [MORE_KEYWORDS]

  • The search is case-insensitive. e.g hans will match Hans
  • The order of the keywords does not matter. e.g. Hans Bo will match Bo Hans
  • Customers matching at least one keyword will be returned (i.e. OR search) e.g. Hans Bo will return Hans Gruber, Bo Yang
  • When searching for names, fuzzy search based on Soundex will be used e.g. Aschcroft will match Aschcraft, similarly Bob will match Bop
  • No need to type in the whole word. e.g 9927 will match 27859927
  • For precise searching, specify the corresponding attribute (phone number or email) e.g. find p/88888888 will only match the customer with phone number 88888888

Examples:

  • find John returns john and John Doe
    Walk-through with Images Before executing the FindCommand:

    After executing the FindCommand:

  • find alex david returns Alex Yeoh, David Li
    Walk-through with Images Before executing the FindCommand (with at least one keyword):

    After executing the FindCommand (with at least one keyword):

  • find Bob returns Bob and Bop
    Walk-through with Images Before executing the FindCommand (with FuzzySearch):

    After executing the FindCommand (with FuzzySearch):

  • find 8000 returns both Roy Balakrishnan and Bob
    Walk-through with Images Before executing the FindCommand (with matching keywords 8000):

    After executing the FindCommand (with matching keywords 8000):
    • Both `Roy` and `Bob` have `8000` reward points hence they show up in the search.


  • find p/87438807 returns only Alex Yeoh
    Walk-through with Images Before executing the FindCommand via PHONE_NUMBER:

    After executing the FindCommand via PHONE_NUMBER:

  • find e/charlotte@example.com returns only Charlotte Oliveiro
    Walk-through with Images Before executing the FindCommand via EMAIL:

    After executing the FindCommand via EMAIL:

2.7 Deleting a Customer : delete

Removes a Customer from bobaBot.

Format:

delete p/PHONE_NUMBER or

delete e/EMAIL

  • Deletes the Customer with the following PHONE_NUMBER when p/ specified.
  • Deletes the Customer with the following EMAIL when e/ specified.

Examples:

  • delete p/88888888 removes the Customer with the phone number 88888888.
    Walk-through with Images Before executing the DeleteCommand via PHONE_NUMBER:

    After executing the DeleteCommand via PHONE_NUMBER:

  • delete e/royb@example.com removes the Customer with the email royb@example.com.
    Walk-through with Images Before executing the DeleteCommand via EMAIL:

    After executing the DeleteCommand via EMAIL:

2.8 Undo a Command : undo

Reverts a command that has been executed. Returns bobaBot to the previous state before executing the command.

Format: undo

Walk-through with Images Before executing the UndoCommand (after a DeleteCommand):

After executing the UndoCommand (Deleted Customer Alex Yeoh is back into bobaBot):


:information_source: Notes about the UndoCommand:

  • bobaBot only preserves the 20 most recent state changes (Commands such as list, find, help, calc and exit will not result in a state change).

2.9 Redo an UndoCommand : redo

Reverts the UndoCommand. Returns bobaBot to the state before executing the UndoCommand.

Format: redo

Walk-through with Images Before executing the RedoCommand:
  • This continues from the above example in UndoCommand (where we perform an UndoCommand on a DeleteCommand)

After executing the RedoCommand (The Customer Alex Yeoh is removed from bobaBot again):


:information_source: Notes about the RedoCommand:

  • bobaBot only preserves the 20 most recent state changes (Commands such as list, find, help, calc and exit will not result in a state change).

2.10 Clearing all entries : clear

Clears all Customers from the bobaBot.

Format: clear

Walk-through with Images Before executing the ClearCommand:

After executing the ClearCommand:

2.11 Calculate: calc

Do basic arithmetic calculation including +, -, *, /. Allow multiple operators and precedence

Format: calc {arithmetic expression}

Example: calc 5+2*(4-2)

Walk-through with Images Before executing the CalculateCommand:

After executing the CalculateCommand:


:information_source: Notes about the CalculateCommand:

  • It supports spaces between numbers, operators and parentheses, e.g.calc 5 + 2 * (4 - 2) works too.

2.12 GUI Calculator: calc-gui

Launch a GUI calculator. A calculator window will pop-up

Format: calc-gui

Walk-through with Images Before executing the CalculatorGuiCommand:

After executing the CalculatorGuiCommand:

2.13 Viewing help : help

Shows a message explaining how to access the help page.

help message

Format: help

2.14 Exiting the program : exit

Exits the program.

Format: exit

Walk-through with Images Before executing the ExitCommand:

After executing the ExitCommand:
  • bobaBot Application Closed

Saving the data

bobaBot data are saved in the hard disk automatically after any command that changes the data. There is no need to save manually.

Editing the data file

bobaBot data are saved as a JSON file [JAR file location]/data/bobaBot.json. Advanced users are welcome to update data directly by editing that data file.

:exclamation: Caution: If your changes to the data file makes its format invalid, bobaBot will discard all data and start with an empty data file at the next run.

Archiving data files [coming in v2.0]

Details coming soon …


3. FAQ

Q: How do I transfer my data to another Computer?
A: Install the app in the other computer and overwrite the empty data file it creates with the file that contains the data of your previous bobaBot home folder.


4. Command summary

Action Format, Examples
Add add n/NAME p/PHONE_NUMBER e/EMAIL m/BIRTHDAY_MONTH r/REWARD [t/TAG]…
e.g., add n/Betsy Crowe p/1234567 e/betsycrowe@example.com m/1 r/5000 t/gold
Edit edit p/PHONE_NUMBER [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [m/BIRTHDAY] [r/REWARD] [t/TAG]… or
edit e/EMAIL [n/NAME] [p/PHONE_NUMBER] [e/EMAIL] [m/BIRTHDAY] [r/REWARD] [t/TAG]…
e.g., edit p/98765432 n/Miles Morales, edit e/alexyeoh@example.com r/1000 p/11111111
Increase incr 100 p/PHONE_NUMBER or incr 100 e/EMAIL
e.g., incr 100 p/87438807, incr 100 e/alexyeoh@example.com
Decrease decr 100 p/PHONE_NUMBER or decr 100 e/EMAIL
e.g., decr 100 p/87438807, decr 100 e/alexyeoh@example.com
Delete delete p/PHONE_NUMBER or delete e/EMAIL
e.g., delete p/87438807, delete e/alexyeoh@example.com
Find find KEYWORD [MORE_KEYWORDS]
e.g., find alex david
Undo undo
Redo redo
Calculate calc {arithmetic expression}
e.g. calc 5 + 2 * (4 - 2)
Calculator calc-gui
Clear clear
List list
Help help
Exit exit

5. List of terminologies

Term Meaning
CLI Abbreviation for Command-Line Interface. A command-line interface receives commands from a user in the form of lines of text. This provides a means of setting parameters for the environment, invoking executables and providing information to them as to what actions they are to perform.
GUI Abbreviation for Graphical User Interface. A graphical user interface allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation.
Command A command is a directive to a computer program to perform a specific task.
Parameter A value for a specified field.
Command box Place where the user types in the command.
Tag A remark that can be added to customers.