Yusuf's Project Portfolio Page
Project: McKitchen
McKitchen (My-CLI-Kitchen) is a desktop application that can quickly store, edit, and search for recipes by running a single command. This is ideal for the fast typists, amateur cooks, busy students or executives who want a simple way to store or search for simple recipes to cook.
The user interacts with it using a CLI-like interface, and it has a GUI created with JavaFX. It is written in Java and has about 8k LoC.
Listed below are my contributions to the project with majority of the credits given to AB-3 as it served as a strong foundation for our application.
- New Model: Added the skeleton code for what classes in McKitchen are going to be based and improved on.
- As our application is morphing AB-3, we had to modify some base files to suit our needs, and I took charge of updating the files in
model/.
- As our application is morphing AB-3, we had to modify some base files to suit our needs, and I took charge of updating the files in
- New Parser: Update AB3’s Parser class for our own needs.
- As we modified the files in
model/, we also had to modify how user inputs were parsed and checked for validity.
- As we modified the files in
- New Feature: Update the
Findfeature to find a Recipe based on the inputs given.- What it does: Allows users to search for a recipe that contains any of the keywords given.
- Justification: This features improves the user experience of our users by enabling them to search for recipes based on what ingredient they have on hand or feel like eating.
- Highlights: This enhancement requires all recipes to be searchable as it should match the recipe’s name, ingredient, or tag. I implemented this by creating
SearchSetwhich represents a recipe into its keywords, making it easy to search and match.
- New Feature: Access (
edit,view,delete) recipe by index.- What it does: Allows the above-mentioned features to work by specifying the index of the recipe in the current list view.
- Justification: Improve user-experience by alleviating the issue of long commands by allowing users to specify
-x <recipe number from list>so that users would not have to type the full name of a recipe. - Highlights: This enhancement requires a new
Prefixto denote that the data after it is anIndex. I then had to add a new method to get a recipe based on its index and update the affected commands.
- Modifications to existing features:
- Update
Exit,Help, andListto work as how we intended for it to from AB-3’s to McKitchen. - Achieved 100% code coverage for files in:
model/*,FindCommand, andFindCommandParser, along with other files.
- Update
-
Code contributed: Click here to see the code that I’ve contributed on RepoSense.
- Project management:
- Managed releases
v1.3-v1.4.1(4 releases) on GitHub - Planned and organised weekly meetings as a way to keep the team updated with each other’s work and update them on what needs to be done for the week.
- Aggregated issues to improve code coverage and address issues found by other testers
- Managed releases
- Documentation:
- User Guide:
- Update the flow and formatting of the User Guide,
- Ensured that it was more user-centric and friendly,
- Added tips to features to help users understand how to best use certain features and included tips for advanced users
- Assisted the other members with writing the features they had implemented.
- Developer Guide:
- Update the flow and formatting of the Developer Guide
- Assisted with the creation of UML diagrams for the Developer Guide
- Update the undo/redo future feature to fit our need
- Include enhancement to find as a future feature and explain its implementation
- User Guide:
- Community:
- Setting up the GitHub organisation and team repo
- Maintaining the issue tracker
- Release management
- PRs reviewed (with non-trivial review comments):
- Contributed to forum discussions
- Reported bugs and suggestions for other teams in the class