Project: Nuudle

Nuudle is a desktop app that helps nurses manage patient records and schedule appointments in an accurate and efficient manner. It is optimised for use via a Command Line Interface (CLI), and has a Graphical User Interface (GUI) built with JavaFX.

It is written in Java, and has about 20 kLoC, of which I contributed about 5 kLoC.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • New Feature: Added the ability to automatically archive past appointments. (#111)
    • What it does: automatically archive past appointments into the archive folder as a Comma-Separated Values (CSV) file upon starting the app. The data are saved according to their months.
    • Justification: This feature improves the product significantly as it removes past appointments, reducing the amount of data shown to the user. The past appointments will be neatly stored in a CSV file for future reference.
    • Highlights: This enhancement requires understanding on how Jackson serialised objects to CSV format. The implementation was challenging as certain data type, like Sets, cannot be serialised into a linear data form, like CSV format.
    • Credits: The Jackson CSV library was used to serialise Java objects to CSV format for saving.
  • New Feature: Added a history feature that allows the user to navigate to previous commands using up/down arrow keys. (#128)
    • Justification: This feature improves the product significantly because a user may want to repeat similar commands without typing in the whole command. This feature pairs well with the undo feature as it allows user to undo and subsequently modify the previously executed command.
  • Enhancements to existing features:
    • Improved the existing storage feature to allow reading and saving of appointment data from a JSON file. (#94)
    • Added parser logic for date and time, with support for natural datetime language. (#86)
    • Updated the GUI to support appointment list view, live clock view and realtime update to appointment list. (#87, #127, #175)
    • Improved the way the app loads corrupted data from the storage. (#123)
      • What it does: Loads all uncorrupted data from the JSON file and displays a status message if there are any corrupted appointment or patient data.
      • Justification: Previously, if any data is corrupted in the JSON file, the whole JSON file will be invalidated, and the app starts up with an empty appointment/patient book. This is not appropriate as it removes all user’s data without warning even when some of the data are not corrupted.
      • Highlights: This enhancement requires detection of corrupted data by checking for missing fields, invalid data type in fields (such as unsupported date, time) and unexpected data value (such as null paths).
    • Added commonly-used commands in help box (can be accessed through help command). (#131)
    • Wrote relevant tests for the new implementation and enhancements to existing features.
  • Project management:
    • Maintained the issue tracker and managed milestones
    • Managed releases v1.1 - v1.4 (4 releases) on GitHub
  • Documentation:
    • README:
      • Updated README to stay updated to current Nuudle project details (#40)
    • User Guide:
      • Authored details on the Nuudle’s supported date time format. (#49)
      • Authored details on Nuudle’s file backup and data archiving feature. (#42, #123)
      • Updated the edit, clear and cancel command. (#49, #196)
      • Authored the Using Nuudle segment to introduce Nuudle’s GUI layout. (#196)
    • Developer Guide:
      • Authored the non-functional requirements and glossary segment. (#50)
      • Updated and maintained the Storage design section, and the corresponding Storage UML class diagram. (#110, #139)
      • Added implementation details on the data archiving feature, with the appropriate UML diagrams. (#118, #187)
      • Added more manual testing instructions to the appendix section for manually testing data archiving and data corruption handling feature. (#131)
  • Community:
    • PRs reviewed (with non-trivial review comments): (#92, #95, #96)
    • Contributed to forum discussions (examples: 1, 2, 3)
  • Tools:
    • Integrated a new Github plugin (PlantUML GitHub Action) to the team repo (#102)