Project: SunRez

SunRez is a resident management system for use in hostels and residential colleges (RCs). The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 19 kLoC. Given below are my contributions to the project.

  • New Feature: Added command history feature and tests (#63, #107 and #175).
    • What it does: The history [COUNT] command displays (from most to least recent) successful commands previously executed. If the COUNT parameter is not specified, the entire history is displayed. Otherwise, the COUNT most recent entries are displayed. This history is saved to a file, and loaded back upon app startup. Lastly, the UP and DOWN arrow keys can be used to navigate command history (auto-filling the command box with previous successful commands).
    • Justification: Managing student housing records can involve a lot of repeated commands, or commands which differ only slightly from one another; command history speeds up this repetitive aspect of housing management. History is saved to a file so that users do not lose it when they close SunRez for the day.
    • Highlights: This feature entailed in-depth knowledge of every component in SunRez: command text had to be intercepted in the Logic component, stored in the Model component and saved using the Storage component. The UI component had to be modified to support navigating command history, the implementation of which was a design consideration that ultimately led to a refactoring to better respect the Single Responsibility Principle. A further design consideration of whether to record invalid commands in history was discussed and resolved with the decision to only record successful commands.
    • Credits: Inspiration for the user-facing behavior of the command history feature was taken from Address Book (Level 4) but its implementation was not referenced during development.
  • New Feature: Added undo/redo commands (#128) with keyboard and menu shortcuts.
    • What it does: The undo command reverses the effects of a previous state-changing command, while the redo command reverses an undo command’s effects.
    • Justification: Sometimes users execute the wrong command. The undo/redo feature allows them to easily correct those mistakes. Cross-platform keyboard shortcuts quicken these operations for fast typists, while GUI menu shortcuts provide a simple interface for beginners.
    • Highlights: Much of the design was understood and adapted from another project (See Credits below). However, the adding of shortcuts involved understanding the UI to add accelerators and organize keyboard shortcuts in KeyboardShortcuts.
    • Credits: Code for undo/redo commands was adapted from Address Book (Level 4).
  • Code contributed: RepoSense link

  • Enhancements to existing features:
    • Updated the GUI to better display three types of data and long user feedback messages: #152, #299 and #300
  • Contributions to user guide (UG):
    • Standardized UG formatting in initial draft: #19.
    • Added the section describing the SunRez UI: #325.
    • Added the initial command parameters section (later revised): #279.
    • Added feature sections on history, undo, redo, clear and data transfer: #63, #128, #163 and #160.
    • Various other fixes and formatting changes. The comprehensive list is here.
  • Contributions to developer guide (DG):
    • Wrote use cases UC-017, UC-018 and UC-021.
    • Added manual testing instructions for command history and undo/redo: #333.
    • Updated logic component descriptions and diagrams: #386 and #429.
    • Added implementation details and diagrams for command history: #109, #317 and #417.
    • Added introductory sections explaining audience and diagrams: #345 and #408.
  • Community:
  • Team Tasks: