Shanice Tang - Project Portfolio Page
Project: CafeCRTL
Overview
CaféCTRL is a software engineering project for CS2113. The user interacts with the application through CLI. It has around 6 kLoC, and it is done in a team of 5.
Value Proposition
CaféCRTL aims to optimize managing of inventory and cash flow in a restaurant. Our CLI platform empowers Café proprietors to streamline inventory and menu management.
Target User
Café proprietors who prefer typing on CLI than any other interaction method and are seeking for a software solution to optimize the management of their café’s operations.
Summary of Contributions
Code Contributed
Click here to see my code contribution :)
Enhancements Implemented
Features
- Delete Dish
- Function: Allow user to delete a specific dish on the menu
- Command Format:
delete DISH_INDEX
- Error Handling: This command is able to detect missing argument tag, missing argument, and invalid index. The error message will be shown to the user.
- Buy Ingredient
- Function: Allow user to add ingredients to the Pantry. If ingredients have been previously added, its quantity will update accordingly
- Command Format:
buy_ingredient ingredient/INGREDIENT1_NAME qty/INGREDIENT1_QTY[, ingredient/INGREDIENT2_NAME qty/INGREDIENT2_QTY, ...]
- Error Handling: This command is able to detect the following user errors and outputs the appropriate error messages
- Missing argument tag / Missing arguments
- Quantity value less than 1 or greater than 1,000,000
- Empty / Invalid Units
- Function: Allow user to add ingredients to the Pantry. If ingredients have been previously added, its quantity will update accordingly
- View Total Stock
- Function: Allows user to view the total stock currently in the Pantry
- Command Format:
view_stock
Enhancement
- Storage
- Encoding of Menu object to a readable text file menu.txt
- Decoding of data in menu.txt to Menu object
- Parser
- Implemented parsing for the features listed above
- Improved precision of error handling by adding some checking methods:
isInvalidQty
,isEmptyUnit
,isValidUnit
,checkForMismatchUnit
- Pantry
- Implemented pantry class together with @NaychiMin which helps user to keep track of their current stock. This enhancement plays a huge role to several commands as it allows the user to smoothly interact with the pantry, hence it is important to ensure its completeness by ensuring it is able to seamlessly handle pantry-related operations.
- Allows user to add ingredients to pantry (through
buy_ingredient
) and updates the quantity of existing ingredients. - Ensures user uses the same unit for existing ingredients as well as the menu. To allow this to be implemented, I helped modified the Ingredient class to accept units as a separate attribute and helped modify other classes/methods that instantiates an Ingredient object and create a method in Parser
checkForMismatchUnit
to reject mismatching units.
- Messages & ErrorMessages
- Provided meaningful messages that can be easily understood by the user
Contributions to UG
- Added documentation for the following features: Delete Dish from Menu, Buy Ingredients, View Total Stock, Add Order, Previous Day, Next Day
- Author tagged feature documentation to their respective contributors <3
Contributions to DG
- Designed various UML diagrams: Architecture Diagram, Ui Component Class Diagram, Data Component Class Diagram, Delete Sequence Diagram
- Added descriptions for Ui component, Delete Command, View Total Stock Command, and Buy Ingredient Command
Team-based Task
- Logging
- This was challenging as I encountered the issue of the log messages being printed out to system console which ruined the Ui. :( I had to do external research and found a solution to store log messages into a log file without displaying at runtime. :)
- Maintaining issue tracker
- Testing application and report bugs found
Review / Mentoring Contributions
- Reviewed and merged some PRs #300, #322, #283, …
- Clarified and updated the team before making major changes to ensure everyone is on the same page <3
- Ensuring unused methods can be safely deleted with permission from the team member who wrote it