Xpire
Expiry Date Tracker Desktop App written in Java
Preface
Xpire is a student software engineering project from the module CS2103T: Software Engineering @ National University of Singapore (NUS). I took this module in AY19/20 Semester 1 under Prof Damith Chatura Rajapakse.
This is my first real project in the world of Software Engineering where we learn how to work in groups of 5 to morph a brown-field application (an address book) into an application of our choice (with its own functions).
The application that we built is quite rudimentary as it relies on a command-line interface for user interaction. However, I think the app is actually quite useful, and I have seen more modern examples of the idea on the AppStore now (not as a Desktop application). It was quite an enjoyable project and it sparked my interest in Software Engineering (and it does mean a lot as a lost Sophomore in late 2019).
About Xpire
Have you ever lost track of your items' expiry dates and end up throwing the items away? Have you ever open your fridge to search for your favourite chocolate, only to realise that it has already expired? Fret not! Xpire is here to save you! With features to help you keep track of your items' expiry dates as well as to remind you of soon-expiring items, you will never have to worry about when your items are expiring again. Next time, you will be sure to eat that chocolate before it expires!
Xpire is for those who prefer to use a desktop app for tracking expiry dates of items. More importantly, Xpire is optimised for those who prefer to work with a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you have trouble tracking your items' expiry dates, Xpire can help you manage and notify you of items that are soon-expiring.
Technical Details
This application is mostly written in Java with JavaFX as support for the desktop build and for the interface components.
Personal Contributions
I mainly wrote two major functionalities of the app:
- Tagging where users can tag items that they intend to track
- Redo/Undo where users can undo/redo their last action
I'm actually quite proud of the way I did the undo/redo. More technical details of my implementation can be found here!
I also wrote quite a lot of the JUnit tests and was primarily responsible for refactoring them.