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
undo
command is executed. - Justification: When the user executes an unintended command, they can easily execute
undo
to return the state before. For e.g., if the user accidentally deletes a customer, they can callundo
to 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
undo
commands by storing the versions of bobaBot and retrieving them when theredo
command is executed. - Justification: When the user executes an unintended
undo
command, they can easily executeredo
to return the state before. For e.g., if the user adds a customer into bobaBot and accidentally executes anundo
command (returns to state where the customer is not added into bobaBot), they can callredo
to 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.1
andv1.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 fromindex
toPHONE_NUMBER
orEMAIL
. (Pull Requests #67, #112)- What it does: This feature allows the user more flexibility in choosing the type of identifier to
delete
the customer by. Previously, the user can onlydelete
customers byindex
according to AB3’s implementation ofDeleteCommand
. However, bobaBot now supportsdelete
via 2 types of identifiers -PHONE_NUMBER
orEMAIL
. - Justification: Previously, the user can only delete a customer by referencing the
index
shown on the result display and the process of deletion would often require afind
customer first, followed by adelete
customer based on the search result. However, this creates a dependency onfind
and is not very efficient. With the current implementation in bobaBot, users can ask for either the customer’sPHONE_NUMBER
orEMAIL
and 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
promotions
feature. There is also a need to change the originaldark theme
to one that catered more towards our users such as amilk tea theme
.
- Documentation:
- User Guide:
- Developer Guide:
- Community: