Project: Uni-Fy

Uni-Fy is a desktop app for managing your university workload and it is designed by university students for university students. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 10 kLoC.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • Tag Command: Added the ability to add multiple tags to task.
    • What it does: Adds tags to tasks
    • Justification: This feature improves the app significantly as it allows the user to tag tasks such as assignments, quizzes, meetings, presentations, etc.
    • Highlights: It required in depth understanding of how the optional parameters work. It was also challenging as I had to change the implementation from having one tag for each task to multiple tags for each task.
    • Contribution: Created the TagCommand and TagCommandParser classes.
  • Undone Command: Added the ability to mark a task as TODO.
    • What it does: allows the user to mark a task as TODO. Also updates the progress bar to show number of task that are done.
    • Justification: This feature improves the app significantly as the edit command does not allow the user to change the state of the task from done to ToDo.
    • Contribution: Added the UndoneCommand class.
  • Sort Command: Added the ability to sort the task list.
    • What it does: Sorts the task list based on sort type - time or priority and sort order - asc(ascending) or desc(descending) order.
    • Justification: This feature improves the app significantly as the user is able to sort the tasks based on time which allows the user to focus on the tasks due first. The user is also able to sort tasks based on priority which allows the user to prioritize the tasks based on their importance.
    • Highlights: It required in depth understanding of the lambda function, functional interface BiFunction, model and logic components. The implementation was a bit challenging as it was not done the conventional way using the LocalDateTime date-time object.
    • Contribution: Created the SortCommand and SortCommandParser classes.
  • Command History: Added the ability to access previous commands.
    • What it does: Allows the user to access the previous command history for a particular session with the help of /prev or up arrow key command and /next or down arrow key command.
    • Justification: This feature improves the app significantly as the user can easily access the previous commands without having to retype the whole command again.
    • Highlights: It required in depth understanding of the key listeners in the ui component and commands component.
    • Contribution: Created CommandHistory class and updated the MainWindow class in the ui component.
  • Project management:
    • Managed release v1.3c - v1.4 (2 releases) on GitHub
  • Enhancements to existing features:
    • Incorporated the existing priority feature with the edit command.
  • Documentation:
    • User Guide:
      • Added documentation for the features tag, edit ,sort, /prev and /next.
    • Developer Guide:
      • Added implementation details of the sort feature.
      • Added a fair share of user stories.
      • Added some use cases.
  • Community:
    • PRs reviewed (with non-trivial review comments): #343, #344, #209, #208
    • Reported bugs and suggestions for other teams in the class (examples: 1, 2, 3)
    • Contributed to team discussions: 1