Benjamin Soh'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:
UndoCommand(Pull Requests #141)- What it does: This feature allows the user to undo previously executed commands by storing the previous versions of bobaBot and retrieving them when the
undocommand is executed. - Justification: When the user executes an unintended command, they can easily execute
undoto return the state before. For e.g., if the user accidentally deletes a customer, they can callundoto return to the previous state (where the customer is not deleted) instead of having trouble repeating the whole process again. - Credits: Inspiration from AB3’s Developer’s Guide
- What it does: This feature allows the user to undo previously executed commands by storing the previous versions of bobaBot and retrieving them when the
- New Feature:
RedoCommand(Pull Requests #141)- What it does: This feature allows the user to revert the previously executed
undocommands by storing the versions of bobaBot and retrieving them when theredocommand is executed. - Justification: When the user executes an unintended
undocommand, they can easily executeredoto return the state before. For e.g., if the user adds a customer into bobaBot and accidentally executes anundocommand (returns to state where the customer is not added into bobaBot), they can callredoto return to the state (where the customer is added) instead of having trouble repeating the whole process again. - Credits: Inspiration from AB3’s Developer’s Guide
- What it does: This feature allows the user to revert the previously executed
- New Feature:
Promotions(Pull Requests #150, #154)- What it does: Renders the promotion images within a folder into the GUI so users can be aware of and double-check the ongoing promotions when customers claim a particular deal/offer.
- Justification: There are often many ongoing promotions for a bubble tea shop and the user might not be aware of them if they are new to the job. This helps to keep them informed about the shop’s ongoing promotions and also allows them to validate it when customers try to claim them.
- Credits: Adapted a method to reference files as a resource from mkyong
- Code contributed: RepoSense link
- Project management:
- Managed releases
v1.2.1andv1.3.trial(2 releases) on GitHub - Managed the group’s weekly meeting notes
- Managed the UI screenshots for all the features demo
- Managed releases
- Enhancement to existing features:
DeleteCommand- Changing identifier fromindextoPHONE_NUMBERorEMAIL. (Pull Requests #67, #112)- What it does: This feature allows the user more flexibility in choosing the type of identifier to
deletethe customer by. Previously, the user can onlydeletecustomers byindexaccording to AB3’s implementation ofDeleteCommand. However, bobaBot now supportsdeletevia 2 types of identifiers -PHONE_NUMBERorEMAIL. - Justification: Previously, the user can only delete a customer by referencing the
indexshown on the result display and the process of deletion would often require afindcustomer first, followed by adeletecustomer based on the search result. However, this creates a dependency onfindand is not very efficient. With the current implementation in bobaBot, users can ask for either the customer’sPHONE_NUMBERorEMAILand they can remove the customer via either identifier.
- What it does: This feature allows the user more flexibility in choosing the type of identifier to
- Enhancement to existing features: JavaFX - Transform the original AB3’s UI to the proposed wire-framing design for bobaBot. (Pull Requests #88, #150)
- What it does: Makes the bobaBot application more visually appealing to the user and support other features within bobaBot.
- Justification: The previous UI from AB3 does not support all the features we implemented in bobaBot. Therefore, we had to change the UI to one that could support all the features in bobaBot such as the
promotionsfeature. There is also a need to change the originaldark themeto one that catered more towards our users such as amilk tea theme.
- Documentation:
- User Guide:
- Developer Guide:
- Community: