Skip to content

Latest commit

 

History

History
82 lines (62 loc) · 5.09 KB

File metadata and controls

82 lines (62 loc) · 5.09 KB

Liu Xiaoyu - Project Portfolio

xiaoyu nus

Role: Developer
Responsibilities: Reminder System + Logo and UI Designer


PROJECT: Xpire

Overview

My team of 5 computer science students have been given the task of morphing a command line interface(CLI) application named AddressBook into a brand new app. Being students staying on campus in National University of Singapore, as we are keen to solve the issue of food wastage due to them passing their expiry date. As such, we have created the app Xpire to help students track the expiry dates of items. Our app is equipped with many functions like reminder, search and sort. The application is written in Java over 3 months, and has about 15 kLoC.

Summary of contributions

  • Major enhancement: added the reminder system

    • Purpose: to allow user to customise a reminder date, starting form which the item needs to be reminded of its expiry date.

    • Importance: As items last for different duration before which they expires, customising the reminder eases the user’s mind as he or she does not have to remember when is the item supposed to be consumed or replaced.

    • Highlights: The reminder is enhanced by a filter to list down all items in alerting condition. It can also filter items based on number of days left before their expiration date. As such, the complexity of the implementation is high, requiring mastery knowledge of many components including the Module, User Interface as well as Logic. The feature works with existing and also future commands, and can be turned into active notification readily.

  • Major enhancement: redesigned graphic user interface(GUI)

    • Purpose: to make the GUI one that specifically serves Xpire and no other purposes by displaying the number of days left before an item expires and changes its colour accordingly.

    • Importance: to make our application different from a notebook or to-do list on paper, it is important that the information regarding the item dynamically changes according to its status so that the user can easily identify expiring items and handle them properly.

    • Highlights: Despite limited resources on the use of JavaFX, the overall effect achieves high degree of comfort and convenience. The task is especially challenging as the UI components interacts with many other modules such as the lists of items, the feedback and the commands entered. The feature is not hard coded and can easily integrate with future commands.

  • Minor enhancement: added a command history which allows the user to navigate to previous commands using up/down keys.

  • Minor enhancement: added the all items panel which displays a static view of all items in both tracking list and to-buy list.

  • Minor enhancement: enabled a clickable hyperlink to our User Guide page.

  • Minor enhancement: set the upper and lower bonds for expiry date and reminder threshold to prevent unwanted bugs.

  • Minor enhancement: set a restriction on the input command length through the UI to prevent String overflow.

  • Code contributed: [RepoSense]

  • Other contributions:

    • Team tasks:

      • Refactor UI components from the AddressBook. (Pull requests #48)

      • Designed the logo. (Pull request #77)

      • Designed the mock-up UI.

    • Documentation:

      • Added GUI and User Guide writing instructions of the User Guide: (Pull requests #134)

    • Enhancements to existing features:

      • Refactored and expanded TypicalItems to be used by J-Unit Testing. (Pull requests #219)

      • Make the ResultDisplay resizable. (Pull requests #184)

Contributions to the User Guide

You can refer to parts of my changes to the User Guide below, including some GUI components and reminder components.

Contributions to the Developer Guide

The following section are parts of my changes to the Developer Guide. Hope you can understands my features from a more technical point of view.