Project: FlashNotes

FlashNotes is a desktop address book application used for creating and accessing flashcards for studying. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 13 kLoC.

Given below are my contributions to the project.

  • New Feature 1: Implemented a new type of object named Decks.
    • What it does: Enables the application to store a different type of object
    • Justification: Implementing Decks is vital to ensuring that flashcards can be organised according to themes and topics for revision purposes. It also enables the tracking of revision statistics on the deck level, which is crucial in any flashcard application.
    • Highlights: This enhancement affects existing and future commands as many actions revolves around the Deck object type. It required an in-depth analysis of design alternatives to weigh the tradeoff between the value and the speed of development. Details can be found here.

      Implementation in particular was challenging because creating a new object affects all components from UI to Model to even storage. I handled everything end to end, which included UI, business logic and data management. This excludes the saving and reading of data which was done by my teammate Rachel.

  • New Feature 2: Added the ability to add new Decks via addDeck Command.
  • New Feature 3: Created a new UI for Home Screen to render Decks
    • What it does: Enable the user to visually separate a list of decks from list of cards
    • Justification: Having 2 visually separate screen to view flashcards in gives a sense of the hierarchical relationship between Decks and Flashcards. This separates the 2 different types of objects rendered and the logic of operating in those differing modes.
    • Highlights: Deciding to split the root nodes out from the Main screen was important in allowing scene swaps to happen. This enabled us to include review window into the card mode screen, while excluding it from the main mode.
  • Code contributed: RepoSense link

  • Project management:
    • Managed the release from v1.2 to v1.4 (4 releases) as the Project Lead
    • Led discussions on prioritization of issues and features and user interface
    • Set up github repo and workflows
  • Enhancements to existing features:
    • Modified the GUI color scheme to provide visual separation between Decks and Flashcards
  • Contributions to test coverage improvement: Pull requests (#132 ,#137)

  • Documentation:
    • User Guide:
      • Wrote documentation for the featuresenterDeck, addDeck and Home
      • Standardize documentation format for features in User Guide
    • Developer Guide:
      • Updated the documentation for UI component and the UI class diagram
      • Wrote documentation for implementation of deck
      • Add implementation details of addDeck command including sequence diagrams
      • Add implementation details with FlashNotesParser activity diagram
      • Add activity diagram to explain the execution of Command
      • Add design considerations and explanation for the 3 different UIs available in FlashNotes v1.4
  • Community:
    • Contributed to forum discussions (example: 1)
    • Reviewed teammate commits (examples: 1, 2, 3, 4, 5, 6, 7, 8)
    • Reported bugs and made suggestions for other teams in the class. Bug reports: 1, 2, 3, 4, 5, 6, 7, 8, 9