Project: The Food Diary

The Food Diary - The Food Diary is a desktop app for managing food diary entries, optimized with a Command Line Interface (CLI) and packaged with a Graphical User Interface (GUI) using JavaFX. It is written in Java, and has about 8.5k LoC.

Given below are my contributions to the project.

  • Revise Feature: Added the ability to allow users to quickly make corrections to existing data in the UI with shortcut keys.
    • What it does: Opens up a window, showing the existing details of a FoodDiary entry and allows for quick corrections and updates without requiring the use of prefixes and command syntax in the UI.
    • Justification: This feature improves the product significantly because a user can make corrections to existing data quickly, without losing previous entry details.
    • Implementation: The revise feature is built upon the existing Edit command. When the user enters the revise command, The Food Diary will get the specified entry from the model’s getFilteredEntryList(). Then it will pass the entry to command result in the MainWindow.java. From there, MainWindow#handleRevise will execute and ReviseWindow.java will project the details of the entry into a pop up window for revision. Upon revise completion, edit command will be executed and changes will be updated. There are some codes in place which allows for the TAB, ESC and Ctrl-S / Command-S key to be used to quickly iterate through text fields, close the window and save revisions respectively.
    • Pull requests: #96, #100, #103, #184
  • View Feature: Added the ability to allow users to open an expanded view for entries that are very lengthy.
    • What it does: Opens up a window, showing the details of a specified FoodDiary entry in a full expanded view. Allows the user to read through reviews that are too lengthy to be shown in the main UI window.
    • Justification: This feature allows users to view entry reviews that are too lengthy to be shown in the entry card. All the data are projected onto the view window UI and also separates reviews within the entry for easier view.
    • Implementation: When the user enters the view command, The Food Diary will get the specified entry from the model’s getFilteredEntryList(). Then it will pass the entry to command result in the MainWindow.java. From there, MainWindow#handleView will execute and ReviseWindow.java will project the details of the entry into a pop up window for view.
    • Pull requests: #68, #76, #87, #93
  • Code contributed: RepoSense link

  • Project management:
    • Managed releases v1.2.1, v1.3.0 and v1.4.0 (3 releases) on GitHub
    • Tracked team’s tasks using project board and setting deadlines
  • Documentation:
    • User Guide:
      • Added documentation for revise, view and edit
      • Product description
    • Developer Guide:
      • Implementation and design considerations for view
      • Design considerations for revise
      • Added component details for the Model architecture
      • Added command details and user stories for the features view, clear, revise
      • Instructions for manual testing: View an entry, Clear all entries
  • Contributions to team-based tasks:
    • Set up Github team repo
    • Set up Github actions
    • Maintain issue tracker
    • Release management
    • Merged pull requests
    • Refactored model, logic and test codes from AB3 to fit FoodDiary
    • Worked on Revise and View features and UI enhancements
  • Review/mentoring contributions:
  • Contributions beyond the project team:
    • Shared approach to using enums for individual project #14
    • Helped user who faced difficulties in opening jar file due to java version #158