Project: Dictionote

Dictionote is a desktop application that helps CS2103T students in finding information about the module’s materials and writing notes about them. It is optimised for Command Line Interface (CLI) users so that searching and writing operations can be done quickly by typing in commands.

Given below are my contributions to the project.

  • New Feature: Added the ability to send emails to contacts.
    • What it does: allows the user to send an email to any of their contacts stored in the contacts list. The body of the email can contain the contents of any note present in the notes list.
    • Justification: This feature provides a method to communicate with the stored contacts by utilizing the existing AddressBook feature of storing email addresses. Not only so, but the ability to include stored notes in emails simplifies the process of sharing them with others.
    • Highlights: Due to the use of mailto links in the implemtnation of this feature, it would rely on the user’s operating system (OS) default mail client to handle the email composition and sending requests, which might need to be installed if not present.
    • Credits: TorstenH. and alexey_s from CodeProject for the Java URL invocation code. Note that the Java method used in Dictionote’s source code was not the one specified in the aforementioned posts, but a similar one from the same Java API.
  • New Feature: Added the ability to sort the contacts list by most frequently-contacted.
    • What it does: sorts the contacts list, in descending order, based on the number of times the user had attempted to send an email to each contact.
    • Justification: This feature provides the user with an easy way to identify their most-contacted contacts, as well as positioning them on top of the contacts list for quicker access.
    • Highlights: In order to implement this feature, a custom helper attribute called FrequencyCounter was added for each contact, which starts from 0 and increments by 1 every time an emailcontact command targeting them executes. This allows for contacts found in previous versions of Dictionote to be easily imported to the new version, since this feature does not modify their exisiting attributes.
  • Code contributed: RepoSense link

  • Project management:
    • Managed releases v1.3b (1 release) on GitHub
    • Managed weekly Zoom meetings during Weeks 4 to 13.
  • Enhancements to existing features:
    • Updated the find (now known as findcontact) command to allow for users to search their contacts lists by tags or email. (Pull requests #65, #137)
    • Fixed a bug in the original implementation of the contacts list (i.e., AB3) where two contacts could share the same phone number or email, but not the name. (Pull request #250)
  • Documentation:
    • User Guide:
      • Added documentation for the features emailcontact and mostfreqcontact: #96, #145.
      • Updated documentation for the exisiting Contact (also known as Person in AB3) features: #96.
    • Developer Guide:
      • Updated the description and class diagram of Storage: #265, #282.
      • Added implementation details of the emailcontact and mostfreqcontact features: #133, #277.
      • Added use cases for the deletecontact, clearcontact, and emailcontact features: #277
      • Added a manual testing guide for the addcontact and editcontact features: #282.
  • Community:
    • Examples of PRs reviewed (with non-trivial review comments): #60, #143, #268, #269.
    • Reported bugs found in the textbook’s content: #2.
    • Highlighted potential bugs in the developer guide of AddressBook3: #309.