Project: TuitiONE

TuitiONE is a desktop address book application used for teaching Software Engineering principles. 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.

  • New Feature: Added a new entity Lesson and established bi-directional linkages with Student (previously Person) entities.
    • What it does: Allows users to establish better relationship and collection of data such as lessons enrolled and subscription prices. Overall, a key element for the application to serve its purpose.
    • Justification: A driving factor in the application to serve its purpose. Establishing the new entity allows the user to fulfill their needs to link Student entities with Lesson ones.
    • Highlights:
      • Establishing weaker equality checks using a dependent entity LessonCode, numerous constraints and abstracting the initial Lesson class to dependent field classes such as Subject and Price in iterations v1.2 and v1.3.
      • Ensuring defensive programming is embedded in the bidirectional relationship with multiple constraints so that it can be tapped on by other packages such as model, storage as well as logic.
      • Abstracting logic for ease of usage within other packages (similar to previous pointer).
      • Ensuring and maintaining the new entity into storage integration with Jackson JSON processing library.
  • Enhancements to existing features:
    • Ensuring and maintaining the new and existing (modified) entities into storage integration with Jackson JSON processing library (Pull requests #76, #86)
    • Wrote additional tests for existing features to increase coverage for new entities and constraints (Pull requests #104, #114, #178, #195)
    • Evolve Lesson entity from a single container of primitive data to a class that depends on field entities using abstraction (Pull requests #167, #86)
    • Refactoring message and command logic to ensure easier readability (Pull requests #287)
  • Code contributed: RepoSense link

  • Project management:
    • Managed release v1.3
  • Documentation:
    • User Guide:
      • Did cosmetic and functional (and structural) tweaks overall: #217, #169
    • Developer Guide:
      • Did cosmetic tweaks to existing documentation of user stories: #149
      • Added lesson related user stories: #149
      • Added implementation details of the delete-l feature: #151
  • Community:
    • PRs reviewed (with non-trivial review comments): #159, #190