Samuel Koh's Project Portfolio Page
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/DecreaseCommand - 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
EditCommand, 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 theEditCommand.
- New Feature:
BirthdayMonthTag - Reflects whether it is currently a Customer’s birthday month. (Pull Request #146)- What it does: Automatically adds a
BDAYtag to Customers whoseBirthdayMonthis 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, theBDAYtag 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.
- What it does: Automatically adds a
- Code contributed: RepoSense link
- Project management:
- Enhancement to existing features: Improved the original
EditCommand 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
EditCommand. With this improvement, this entire step is skipped, greatly improving the efficiency of this Command.
- Enhancement to existing features: Improved the original
FindCommand 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
FindCommand 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
- What it does: Updated GUI to display appropriate colours for different membership tiers and status e.g.
- Documentation:
- User Guide:
- Developer Guide:
- Community: