Ong Seeu Sim's Project Portfolio Page
Project: RIZZipe
RIZZipe is a desktop recipe book application used for busy cooks who want to track their recipes. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.
Given below are my contributions to the project:
-
Code contributed: RepoSense link
- New Features:
- Add Gradle CI cache (in this Commit)
- What it does: Adds cache to Github Actions for builds with Gradle as well as JDK
- Justification: Having the CI environment repeatedly pull the same resources as opposed to fetching from a cache wastes resources and slows down the CI runs. THis allows the Gradle and JDK to be refreshed from a cache on Github’s server.
- Add TestFX testing framework (in this Commit)
- What it does: Allows for JUnit tests to mock JavaFX environments in unit testing
- Justification: As our app is highly graphic in nature, some form of unit testing is required for the GUI components. However, these tests were unable to be implemented as there is no support on Ubuntu for TestFX, which interferes with our multiplatform non-functional requirement.
- Going forward: When there is support for JUnit testing with JavaFX across all environments, the User Acceptance Testing will move to unit tests using this framework.
- Add codecov, checkstyle, and basic test cases (Pull request #85)
- What it does: Measures the coverage of test code for this app, as well as validate that new code passes style checks
- Justification: Allows us to track which features are being tested and validated against a set of pre-defined behavior as per our user stories, and add new tests for new features. Furthermore, the checkstyle validates that code is written according to the Java style guide.
- Highlights:
- Added codecov and checkstyle config to project
- Made modifications to
UI
,MainWindow
and other classes to clean up code quality, thanks to checkstyle - Modified and added tests for the Models and Recipe Packages to up codecov
- Added Regex matching for
Ingredient
,tag
,Name
,Step
class as well as othermodel
classes to up codecov as well as validate behavior - Add coverage tests for
model
package - Add coverage tests for
storage
package - Fixed checkstyle issues for the app in this release
- Credits: Alson for adding tests for the
logic
package
- Add
HashMap
ofIngredient
-IngredientInformation
key-value pairs in theRecipe
class (Pull request #137)- What it does: Separates out the recipe-specific information about an
Ingredient
from its common properties, such as Ingredient Name. - Justification: As an
Ingredient
may be shared among multiple recipes with different amounts and quantifiers, this allows for commonIngredient
instances to be shared among differentRecipe
instances, while keeping theirRecipe
specific data as a table value within thatRecipe
. - Highlights:
- Refactored
Ingredient
Field within themodels.Recipe
class from a List ofIngredient
Objects to a Hash table usingHashMap
, consisting ofIngredient
keys andIngredientInformation
value (key-value) pairs - Refactored the tests that these changes affected
- Refactored
- What it does: Separates out the recipe-specific information about an
- Add Logic Infrastructure for UI components (Pull request #146)
- What it does: Passes the Logic dependency down from the MainWindow to deeply nested UI components
- Justification: While it adds dependency injections, certain nested components do need to interact with the Logic instance to send commands and fetch data from the App’s backend.
- Credits: James for implementing the other UI features within this release.
- Add Gradle CI cache (in this Commit)
- Project management:
- Managed releases
v1.1
-v1.4
(4 releases) on GitHub
- Managed releases
- Enhancement to existing features:
- Refactored
seedu.recipe.model.recipe.Recipe
and its related fields (Pull request #69)- Made use of
java.util
Collections, and the use ofjava.util.function
lambdas in the following classes:seedu.recipe.model.recipe.RecipeIngredient
- Constructor
- Field accessors
- Made use of
- Refactored
seedu.recipe.logic.parser
Parser classes for theadd
command, as well as the commands for theclear
andexit
command (Pull Request #72)- Implemented commands and tweaked their messages
AddCommand
ClearCommand
ExitCommand
- Added Functional Pipelines so that these parse functions may be passed as lambdas to the fields within the Command Parsers for
add
,edit
, without the need for try-catch blocksTryUtil::safeParse
- Implemented commands and tweaked their messages
- Refactor Storage and UI classes (Pull Request #83)
- Refactor Storage Adaptors (
JsonAdaptedRecipe
)- Add and serialize new
Recipe
fields
- Add and serialize new
- Add sample
Recipe
dataSampleDataUtil
- Refactored
RecipeCard
to display new data fromRecipe
- Added field validation to
Model
classes:RecipeDuration
RecipePortion
- Added new exceptions for those validation cases
- Refactor Storage Adaptors (
- Patched UI bugs (Pull request #189)
- Patched scaling issues for Recipe Form UI, where the height, width, scrollbar were not scaling as the window for that form was not resizing appropriately
- Added adaptors for various model classes so that they could be displayed properly within the UI
IngredientBuilder
- Added fixes for UI navigation with arrow keys within the text edit components in the
RecipeForm
- Full Coverage Tests for Commons package (Pull request #246)
- Contributed tests for the
commons
package
- Contributed tests for the
- Full Coverage Tests for Storage package (Pull request #252)
- Contributed tests for the following classes:
- ImportManager
- ExportManager
- Contributed tests for the following classes:
- Full Coverage Tests for Logic package (Pull request #255)
- Contributed tests for the following classes:
logic.command
:DeleteCommand
ExitCommand
ExportCommand
FindCommand
HelpCommand
ImportCommand
ListCommand
RecipeDescriptor
SubCommand
logic.parser
ArgumentMultimap
ArgumentTokenizer
CliSyntax
DeleteCommandParser
FindCommandParser
ParserUtil
PrefixTest
RecipeBookParser
SubCommandParser
LogicManager
- Contributed tests for the following classes:
- Refactored
- Documentation:
- User Guide:
- Developer Guide:
- Added user stories for the
delete
,list
features #35 - Added documentation and diagrams for the
model
package #125- Added updated pUML diagrams for the package
- Refactored existing documentation to help developers new to the project better understand the package and how to contribute to it
- Added updated, higher resolution class diagrams, as well as tweaks for clarity of language/formatting #259
- Added user stories for the
- Community: