Project: ProfBook

ProfBook is a desktop application used for easy management of a variety of tasks, students and groups. The user interacts with it using a CLI, and has a GUI created with JavaFX.

Given below are my contributions to the project.

Features Contribution

  • Designed the ProfBook folder structure:
    • This folder structure allows our target users to organise their groups and students in an intuitive way
    • Justification:
      • The folder structure closely mimics the natural hierarchy that our target user are familiar to.
      • Such a structure would allow us to create more tailor-fit features such as Dynamic command and terminal-like structure.
    • Highlights:
      • Deep understanding of OOP principals was needed to craft classes generic yet robust enough to capture the behaviour of each hierarchy. This proved to be difficult as in-depth analysis of design alternative were required
      • Implementation was challenging as it was hard to integrate with our dynamic commands.

Classes Contribution

  • Introduced TaskListManager and ChildManager Class:
    • Manages the required operations and reduces duplicated code.
    • Ensure that operations do not result in duplication
    • Enhances extensibility of code.
  • Introduced TaskOperation and ChildOperation Class
    • Provided an operation class to allow Command logic to manipulate the model without exposing internal details.
    • Justification:
      • Follows OOP principals more closely.
      • Allows for the future migration to an immutable model.
      • Adds another layer of safety by checking the validity and presence of the directory before performing modification.
    • Highlights:
      • Deep-understanding of what is required by Command class was required when designing this class.
  • Introduced ChildAndTaskListManager Class
    • Wrapper class that manages the operations required for both TaskList and Children.
  • Introduced Student, Group, Root Class
    • Encapsulates the required information to uniquely represent the respective objects.
  • Enhanced ModelManager Class
    • Provides the logic to safely manipulate data stored in Student/Group/Root

Project Management:

  • Managed Releases v1.2 on GitHub
  • Created and assigned issues for V1.3, V1.4
  • Integrated Codecov to automate code coverage assessment of PR.

User Guide Contributions

  • Non-Feature Aspects
    • Transferred initial command description from Google documents into Markdown format.
    • Provided skeleton format for each command so that teammates are able to more efficiently populate their features.
    • Wrote the overview of the whole project and three of our main features.
    • Wrote guides on how input flag works.
    • Updated the command summary page.
  • Feature Aspects:
    • Wrote guides for clear, cat, help, exit

Developer Guide Contributions

  • Non-Feature Aspects
    • Migrated old documents to follow ProfBook new requirements and style.
    • Updated introduction paragraphs.
    • Proofread peer's contributions and performed changes for a more seamless reading experience.
    • Wrote proposed future features
  • Feature Aspects:
    • Wrote and created UML for Model component including the ProfBook subpackages.
    • Wrote and created UML for the implementation of
      • Folder structure
      • Moving students
      • Adding a student/group

Community:

  • PRs reviewed (with non-trivial review comments):
  • Contributions to forum: