Project: Duke The Market

Duke The Market is a desktop application used for managing customer contacts and events in department stores. 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
  • Enhancements implemented:
    • New Feature: Added gender field to a person (Pull requests #50, #52)
      • What it does:
        1. Allows the user to add a person with gender field to person list
        2. Allows the user to edit the gender of a person after adding the person to person list.
      • Justification: Gender is a common field in personal profile, and it can be used in demographic analysis for marketing event attendees (related command makeStats is implemented by another team member).
    • New Feature: Added the feature to tag persons to an event (Pull requests #93)
      • What it does:
        1. Allows the user to tag 1 or more persons in the person list to an event in the event list by tagEvent command.
        2. Allows the user to untag from an event in the event list 1 or more persons tagged to the event previously by untagEvent command.
      • Justification: Tagging persons to event allows the user to easily keep track of all attendees in the person list for a marketing event in the event list.
      • Highlights: This feature requires storing reference of Person to an Event in storage, to minimize duplications in storage, a new field Uid is added to Person object to identify unique person. This feature also requires immediate GUI display update of event attendees after tagging and editing related commands.
    • New Feature: Added the feature to create mailing list for an event (Pull requests #122)
      • What it does: Allows the user to create mailing list containing names and emails of all event attendees for an event in the event list, the mailing list is in CSV format.
      • Justification: This feature helps the user to collect event attendee emails and send out post-event feedback surveys and notifications easily.
      • Highlights: This feature requires writing and storing to CSV file, which is an unfamiliar storage file format (data storage uses JSON file format in this application).
    • Testing: Added unit tests for gender field, added gender related unit tests for add and edit person feature.
    • Code Quality
      • Refactored the original delete command to deletePerson to distinguish it from the deleteEvent command.
      • Did overall code quality check for most java files to modify Javadocs and align code format (Pull request #240).
  • Documentation:
    • Contributions to the User Guide:
      • Added documentation for the tagEvent (Link), untagEvent (Link), and mailEvent (Link) features.
      • Modified addPerson (Link) and editPerson (Link) feature slightly to include new gender field.
    • Contributions to the Developer Guide:
      • Added implementation details of gender field in addPerson (Link) and editPerson (Link) feature.
  • Contributions to team-based tasks:
    • Did smoke test for product releases v1.2 and v1.3 (Link)
    • Released JAR file of v1.2.1
  • Community:
    • Review/Mentoring contributions: