Project: LeadsForce

LeadsForce - LeadsForce is a desktop application catered towards student financial advisors (FA) for managing their leads. 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 Search command. (Pull requests: #41, #65)
    • What it does: allows the search command to be able to search for clients whose attributes match the given attribute keywords as well as generic keywords.
    • Justification: This feature improves the user experience for the FAs when managing a large addressbook by providing them with the ability to search for specific for clients with greater flexibility.
    • Highlights: The implementation was challenging as the searching logic is complicated which is dependent on both the given generic keywords and attribute keywords. This requires a predicate to check all the client’s attributes against all the generic keyword and each client’s attribute with their respective attribute keyword, which is also used by the filter command.
  • New Feature: Added Filter command. (Pull requests: #58, #65)
    • What it does: allows the user to filter the current displayed client’s list based on given keywords similar to the search command.
    • Justification: This allows the users to find clients incrementally based on keywords.
  • New Feature: Added Multiple AddressBook functionality. (Pull requests: #110, #129)
    • What it does: allows the user to create/delete/switch between different addressbook.
    • Justification: This feature will allow the FAs to manage different group of clients under separate addressbook that can also be easily ported over to other devices.
    • Highlights: This feature was challenging as it requires direct manipulation of the data files as well as changing multiple different components.
  • New Feature: Added Batch Edit/Delete functionality (Pull requests: #102, #196)
    • What it does: allows the user to edit and delete multiple clients at the same time.
    • Justification: Reduce the number of command needed to be executed for performing multiple edit and delete.
    • Highlights: For the batch edit command, the edit command will now have to check whether after applying the edits to the clients will there be duplicate before applying any of the edit.
  • Code contributed: RepoSense link

  • Enhancements to existing features:
    • Improve sort command by: 1) allowing sorting by multiple attribute at once, (Pull request: #146) 2) allowing for sorting of non-string based attributes, (Pull request: #144) 3) simplifying the comparator usage (#84)
    • Simplify prefix usage by (Pull request: #84) 1) providing support for handling multiple prefix usage, 2) simplify logic which requires the use of specific methods dependent on the prefix with PrefixMapper class
    • Allowed for the toggling between different themes (Pull requests: #137, #197)
    • Update the clear command to display a prompt for confirmation before clearing the addressbook (Pull request: #123, #194)
  • Documentation:
    • User Guide:
      • Added documentation for the features search, filter #41, #58
      • Added documentation for the addressbook command ab create,ab delete, ab list #129
      • Update documentation for existing command clear #123
    • Developer Guide:
      • Added implementation details of the search and filter feature #116
      • Added implementation details of the addressbook command ab create,ab delete, ab list #205
      • Added implementation details for IgnoreNullComparable interface and PrefixMapper class #230
  • Community:
    • PRs reviewed (with non-trivial review comments) (Pull requests: #46, #51, #136, #64)
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)