Le Yi's Project Portfolio Page
Overview
Fitbot is a desktop app that helps university students who are looking to keep track of their calorie consumption and calorie output with the speed and convenience of command-line based tools, especially in times of online school.
Summary of Contributions
The following sections summarise what I have contributed to the project.
New Feature: Added the ability to parse user input into commands
- What it does: Makes sense of user input and extracts the relevant type of command and parameters.
- Justification: This feature is necessary for Fitbot to understand the user inputs.
- Highlights:
- Flexible parameter ordering - Parameters can be provided in any order and will still be parsed appropriately for the user’s convenience.
- Optional parameters - Some commands are able to take in many parameters, but not all are required at all times. Hence, the parser was implemented such that it can handle variable number of parameters for the same command. For example, to edit the profile using the
profile
command, users can input up to 7 parameters, but at any time, only one parameter is required. This makes the commands shorter and more user-friendly. - Error handling - Specific error messages are shown for cases where user input is invalid, e.g. item type is not specified, unnecessary parameters detected, string given where numbers were expected, etc.
- Pull requests: #36, #42, #96, #121, #169
New Feature: Add, View, and Delete Food Bank/Exercise Bank Items
- What it does: The Food Bank and Exercise Bank allows users to store commonly consumed food/commonly done exercise items and their respective calories so that the next time they want to record them, they no longer have to provide the calories for these items.
- Justification: This makes it much more convenient for users to record their calories as they do not have to manually key in the calories everytime.
- Highlights:
- Case insensitive match for item names: For example, if the user stores the item with name “jogging” in the Exercise Bank, the next time he/she tries to record “JOGGING” as an Exercise Item, the calories for the item “jogging” will be automatically retrieved. This is so that it is more convenient for the user and he/she does not need to worry if the names are an exact match.
- Pull requests: #96
Code Contributed: Reposense Link
Project Management:
- Created issues and user stories for
v2.0
,v2.0b
- Assigned PE-D issues to team for
v2.1
- Oversaw the code integration and reviewing process with the team for major code increments (#37, #123, #224, #230, #234)
Enhancements To Existing Features:
Built the skeleton code for Command classes
To start off the project, we needed a base structure to build on for parsing and execution of commands. I set up the abstract Command
class and the initial few XYZCommand
classes for v1.0 to provide the structure for the rest of the team to build on.
(#36)
Make the Logic Component more OOP
This was done in several increments.
- Created
Parser
as an interface with variousParser
classes specific to eachCommand
class implementing it (#102) - Integrate command parsing and execution into a single
LogicManager
class (#141) - Integrate
DataManager
andStorageManager
withLogicManager
so that all operations involving command parsing, data manipulation and data saving are contained withinLogicManager
. (#145)
Documentation:
- User Guide:
- Added more details to the introduction of Fitbot (#128)
- Added a section to explain the usage of the User Guide (#128)
- Added documentation for all Food Bank and Exercise Bank related commands, i.e. the sections “Building Your Food Bank” and “Building Your Exercise Bank”.
- Added shortcuts back to content page after every major section for easier navigation (#230)
- Developer Guide:
- Added documentation for the
Logic
component (#134, #241) - Added documentation for the implementation of “Parsing of Commands” (#241)
- Added instructions of manual testing on “Building Food Bank” and “Building Exercise Bank” (#230)
- Standardised styling for PlantUML diagrams (#117)
- Added documentation for the
- Standardised the styling on Github Pages for Product Website. (#115, #236)