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.
-
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:
-
Documentation:
-
Added GUI and User Guide writing instructions of the User Guide: (Pull requests #134)
-
-
Enhancements to existing features:
-
You can refer to parts of my changes to the User Guide below, including some GUI components and reminder components. |
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. |
