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

  • Added feature to undo/redo previous commands. #107 #189
    • What it does: Allows the user to undo previous commands (which change the state of the address book/event book). Prior undo commands can be redone with redo
    • Justification: A user could make mistakes when writing/using commands, especially since we condensed the available commands to the essentials. As such, PartyPlanet should provide an easily available way to undo this. Keyboard shortcuts were also implemented.
    • Highlights: This enhancement required the creation of a StateHistory class to track the State of the address and event books at the same time.
    • Credits: Code used is referenced weakly from the AB4 undo and redo, but they differ significantly as StateHistory has to be customized for PartyPlanet.
  • Added event book and feature to add events (eadd command) commits 4408fd8, 858ae4a, 551afbd, 9394207
    • What it does: Allows the user to store a book of events in PartyPlanet, and to eadd an event to PartyPlanet
    • Justification: A user would want to keep track of upcoming celebrations, or celebrations that need to be planned.
    • Highlights: This enhancement affected the existing Logic and Model, and required implementation and integration of EventBook and Event from scratch. Finally, testing stubs had to be updated to reflect changes.
    • Credits: Code used for eadd is referenced from the add command, and EventBook and Event are based off of AddressBook and Person.
  • Added feature to request help for specific commands (help COMMAND): #74
    • What it does: Allows the user to request help for a specific command with an optional parameter COMMAND, to be displayed directly in the UI, instead of redirecting to the UG.
    • Justification: Our command syntax is dense, with many optional parameters. help gives a brief overview of all available commands with syntax, and the user can specify a command to get detailed help on, directly available in the UI. This speeds up workflow and minimizes cross referencing to resources outside the application.
    • Highlights: This enhancement relies heavily on MESSAGE_USAGE_CONCISE and MESSAGE_USAGE in each individual command.
    • Credits: Code used is based on the AB3 help command, but then significantly modified after.

Feature enhancements

  • Created a Date class and refactored Birthday and EventDate to inherit from it: #145
  • Refactored DETAIL to REMARK and repackaged and reorganized Name and Remark classes: #311
  • Wrote tests for Undo and Redo: #317

Documentation

Community

  • Team-based tasks: Update README with GitHub Actions build status badge #35 and site wide settings #44

  • Forum posts: #141, #151

  • PRs reviewed (with non-trivial comments): #88, #92, #309