Project: PartyPlanet

PartyPlanet is a cross-platform desktop application that helps users plan birthday celebrations. The user primarily interacts with it using a command-line interface, inside a GUI created with JavaFX. It is written in Java with around 10k LOC.

A full list of code contribution can be found here: RepoSense
Given below are my contributions to the project.

New features

  • Add options to search by partial / exact / all / any matches in list: #116
    • What it does: Allows the user to expand or limit the search criteria when filtering contacts, by specifying whether a partial match is desired, and whether all or only one specified criteria should be fulfilled by each filtered contact.
    • Justification: The granularity with which users filter contacts can vary greatly depending on their search preferences and use case.
    • Highlights: Required defining of individual predicates used for filtering, as well as combining these predicates.
  • Search for contacts by birthday month: #183
    • What it does: Allows the user to find groups of contacts matching a birthday month (or with no birthday specified).
    • Justification: A major use case involves users planning birthday celebrations on a monthly-basis.
    • Highlights: Implemented code to accept months as case-insensitive short / long forms, or as integers.

Feature enhancements

  • Refactor Date class + Add sort by upcoming birthdays (dates) in list (elist): #180
    • A noticeably big PR, to minimize duplicate functionality using inheritance, and change internal date types to better fit subclassing requirements.
  • Add option to sort by birthday month in chronological order, and decoupled ordering option from sorting option: #126
  • Add alternative date formats (ISO, DMY, YMD) with and without years: #119
    • Justification for chosen formats is partially detailed here
  • Update email regex to be more permissive: #286, issue #247
  • Change prefix syntax to dash form, and add long form alternatives: #73, #111
  • Improve GUI visuals to accommodate prior font change: #198
    • This is particularly noteworthy since it emphasizes UX design.
  • Refactor theme command to rely on enumeration, and add theme switching alternative using GUI menu bar: #184
    • Builds upon initial theme implementation by garyljj in #176
  • Add initial GUI skeleton to display event list: commit 02452dd
    • Implemented in favor of tag list proposed in #99 due to limited horizontal space.
  • Add unit tests for: Date, Birthday, ListCommand, ListCommandUtil, ParserUtil, Prefix

Documentation

  • UserGuide:
    • Add section on list as well as command summary: #218
    • Format glossary of parameters into table form #217
  • DeveloperGuide:
    • Add user stories: #51
    • Add use case: #57
    • Add developer section on theme command implementation: commit 977ed91

Team workflow

  • Add workflow to send pull request notifications (open, close, sync) to Telegram #52, #64
    • Improves team workflow since our developer channel on Telegram is more frequently monitored compared to email
  • Add issue tracker templates: #75
  • Organize repo labels
  • Manage opening and closing of GitHub milestones

Community

  • Share script to generate direct links to CS2103 video quizzes (received 10 hoorays :>)
  • Notable PR reviews with non-trivial comments: #128 #158 #186