Project: FlashBack

FlashBack is a desktop flashcard application. 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

  • Enhance Find Feature: Enhanced the ability find flashcards by given user input. #56, #63, #75
    • What it does previously: Allows the user to find a person in AddressBook only by their name.
    • What it does now: Allows the user to find flashcards matching the given keywords in any of its fields (e.g. question, category, priority, and tags), FlashBack displays flashcards that matches any keywords in any of its fields.
    • Justification: This improves the product significantly because a user may add a huge amount of flashcards in FlashBack which makes it difficult to search for flashcards with certain keywords in one or some of its fields, and the app should provide a way for users to easily search for flashcards that contains certain keywords in any of its fields.
    • Highlights: This enhancement affects existing commands. It required a good understand of existing code to enhance the ability of finding flashcards, iterating through all its fields and comparing with keywords. The implementation was challenging as it required changes to existing command and test cases.

  • New Feature: Added the ability to filter flashcards by given user input. #82
    • What it does: Allows the user to filter flashcards according to user specified fields (e.g. question, category, priority, and tag), FlashBack displays flashcards that matches keywords of all the fields specified by the user.
    • Justification: This feature improves the product significantly because a user may want to filter flashcards according to certain fields so that the user can narrow down what flashcards are being reviewed, and the app should provide a way for users to filter flashcards they may want to search for.
    • Highlights: This enhancement required good understanding of existing code to add the ability to filter flashcards, iterating through all its fields and comparing with keywords of the specified fields, and only displaying flashcards that matches all the specified fields. This implementation was challenging as it required addition to some utility classes and allowing multiple keywords for a certain specified field.

  • Contributions to team-based tasks:
    • Refactored test functions and changed test data to fit our project.#56

  • Project Management:
    • Managed release for FlashBack v1.2 on Github.

  • Documentation:
    • User Guide:
      • Added anchor links in the table of contents.#61
      • Added the documentation for the features list, find, and filters.#24, #61, #83
    • Developer Guide:
      • Added anchor links in the table of contents.#89
      • Added implementation details for filter feature with sequence and activity diagram.#89
      • Added the documentation for list, find, and filters.#38, #61, #89
      • Added the Effort section. #89

  • Review/Mentoring Contributions:
  • Contributions beyond the project team: