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

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.

  1. Created Parser as an interface with various Parser classes specific to each Command class implementing it (#102)
  2. Integrate command parsing and execution into a single LogicManager class (#141)
  3. Integrate DataManager and StorageManager with LogicManager so that all operations involving command parsing, data manipulation and data saving are contained within LogicManager. (#145)

Documentation:

Community: