Project: bobaBot

bobaBot is a desktop application for managing customers’ membership details. It is optimized for Command Line Interface (CLI) while retaining some benefits of the Graphical User Interface (GUI). If you are a cashier working at a bubble tea shop and can type fast, bobaBot can help you easily find and manage your customers’ membership information as compared to other GUI applications.

bobaBot contains a database of customers’ information and supports operations to add, update, delete and even find customers based on various inputs. Every entry in the database contains the customer’s name, phone number, email address, birthday month, reward points and membership tags. bobaBot is written in Java and has about 13 kLoC.

Given below are my contributions to the project.

  • New Feature: Increase/ Decrease Command - Added the functionality for users to directly increase/ decrease a Customer’s Reward points. (Pull Requests #138, #205)
    • What it does: Allows the user to increase/ decrease a Customer’s Reward points without accessing the Edit Command. For example, the user choose to identify the Customer via Phone number or Email address to increase/decrease his or her Reward points. The command will only increment/ decrement the Reward points if the final value DOES NOT exceed the MAXIMUM INTEGER VALUE (2147483647)/ DOES NOT become a NEGATIVE VALUE. Or else, an appropriate error message would be thrown.
    • Justification: This feature improves the product efficiency for the users (bubble tea shop cashiers), as this would be easily the most used Commands during any transaction. Therefore, this functionality allows for quick and easy way to increment a Customer’s Reward points without accessing the Edit Command, which is faster to enter into the CLI. Another added side benefit is that there would not be any accidental changes to other Customer fields since we are not directly calling the Edit Command.
  • New Feature: BirthdayMonth Tag - Reflects whether it is currently a Customer’s birthday month. (Pull Request #146)
    • What it does: Automatically adds a BDAY tag to Customers whose BirthdayMonth is the current month (syncs with the local system’s month). For example, if the Customer’s birthday is in November, then from 1 November to 30 November, the BDAY tag would be automatically added to the Customer.
    • Justification: This allows the users (bubble tea shop cashiers) to easily track who is eligible for any ongoing birthday promotions.
  • Code contributed: RepoSense link
  • Project management:
    • Refactored Person class to Customer class (Pull Request #146)
    • Refactored Address class to Reward class (Pull Request #76)
    • Created icon for bobaBot (Pull Request #92)
    • Managed releases v1.3.1 and v1.3.2 (2 releases) on GitHub
  • Enhancement to existing features: Improved the original Edit Command to allow users to identify Customers to edit via Phone number or Email address, instead of via Index. (Pull Requests #68, #76, #82, #205)
    • What it does: Allows users to identify Customers via Phone number or Email address, which are both unique identifiers for individuals, instead of using Index originally.
    • Justification: This feature increases the speed at which the user (bubble tea shop cashiers) can edit the Customer’s fields. Originally, the user would have to scroll through the entire list of Customers to find his/ her Index, then execute the Edit Command. With this improvement, this entire step is skipped, greatly improving the efficiency of this Command.
  • Enhancement to existing features: Improved the original Find Command to allow users to find unique Customers via Phone number or Email address as well. (Pull Request #80)
    • What it does: Allows users to find Customers via Phone number or Email address, which are both unique identifiers for individuals.
    • Justification: This feature ensures that only one unique Customer will be displayed after the Find Command has been executed, which is helpful when the user does not want to scroll through multiple Customers in the resultant list.
  • Enhancement to existing features: Added appropriate colours for special Tags. (Pull Request #146)
    • What it does: Updated GUI to display appropriate colours for different membership tiers and status e.g. GOLD, BANNED, BDAY
  • Documentation:
    • User Guide:
      • Added documentation for the Commands Edit, Increase, Decrease (Pull Requests #45, #115, #140)
      • Added table of contents (Pull Request #165)
    • Developer Guide:
      • Added use cases (Pull Request #42)
      • Added implementation details for the Commands Edit, Increase, Decrease (Pull Requests #115, #140)
      • Updated and added UML diagrams for Edit Command (Pull Request #115)
  • Community:
    • Reported bugs for another team
    • PRs reviewed (with non-trivial comments): #114, #136