Lin Yuan Xun, Caleb's Project Portfolio Page
Project: Lifebook
Lifebook is a desktop task management application created during a collaborative project for a module that teaches Software Engineering principles. The user interacts with it using a CLI, and it has a GUI created with JavaFX. It is written in Java, and has about 13 kLoC.
Given below are my contributions to the project.
- New feature: TaskList and tasks: Added the ability to create
Tasks
, and add or delete them to or from theTaskList
respectively.- What it does: allows the user to create
Tasks
that may either beTodos
orEvents
and keep a record of them in theTaskList
. - Justification: This feature improves the product significantly because a user can now record information about tasks in Lifebook for future reference and planning.
- Highlights: This required an implementation of the TaskList and Tasks (along with its subclasses). This a basis for more commands and features to be added in the future.
- Credits: inspired from the creation of Bob - the personal assistant, which was my individual project.
- What it does: allows the user to create
- New feature List out Tasks, Events or Todos: Implemented the ability for users to list out all
Tasks
,Events
, orTodos
.- What it does: allows the user to list out
Tasks
,Events
, orTodos
. - Justification: allows the user to view all
Tasks
, or if needed, a filtered list of allEvents
orTodos
. - Credits: inspired from the creation of Bob - the personal assistant, which was my individual project.
- What it does: allows the user to list out
- New feature: Mark tasks as done: Implemented the ability for users to mark tasks as done.
- What it does: allows the user to mark completed tasks as done.
- Justification: allows users to have a record of the tasks that have been completed.
- Credits: inspired from the creation of Bob - the personal assistant, which was my individual project.
- New feature: Sort TaskList and AddressBook Implemented the ability for users to sort the
TaskList
andAddressBook
.- What it does: allows users to sort the
TaskList
andAddressBook
by name and date respectively. Users also have the option of restoring both lists to their natural order if needed. - Justification: provides users with intuitively sorted lists. Users normally prefer to look through contact details in alphabetical order, and task details in the order of imminence.
- Highlights: To implement sorting easily, the
TaskList
andAddressBook
had to be wrapped by the JavaFX sorted list class, since the JavaFX filtered list class does not support sorting. Also, thanks to bug reporting by peers, I was able to make further refinements to the sorting command in cases whereby the displayed filtered list is empty, or whereby the unfiltered list had no added items.
- What it does: allows users to sort the
- New feature: TaskList GUI: Created a simple GUI for the
TaskList
andTasks
in the first iteration, which was further enhanced and modified in proceeding iterations by other members.- What it does: allows users to view the
TaskList
and its contents. - Justification: provides a means for users to easily access the contents of the
TaskList
via a graphical representation. - Highlights: made it easier for the developing team to visualise any features that they may have implemented in regards to the
TaskList
and/orTasks
. Implementing this was initially challenging due to my lack of experience with JavaFX. It required me to scrap my initial implementation of the TaskList to create a new one that could provide an observable list to the GUI. - Credits: this GUI implementation for the
TaskList
was inspired by the GUI of contact list of AB3.
- What it does: allows users to view the
- New feature: Storage for TaskList: Implemented storage for the
TaskList
- What it does: allows users to store
TaskList
data. - Justification: provides a means for users to easily store and access the contents of the
TaskList
for future sessions. - Highlights: enables greater ease of implementing storage for data of other features pertaining to
Tasks
in the future. I had encountered some challenges due to my lack of familiarity with JSON. For instance, I was not aware I had to make additional annotations to serialize/deserialize polymorphic objects with JSON. - Credits: implementation inspired by the existing
Storage
component of address book. I referred to a Stack Overflow discussion forum to gain insight on how to resolve my issue regarding JSON adapted polymorphic objects.
- What it does: allows users to store
-
Code contributed: RepoSense link
- Project management:
- Created release
v1.3
on GitHub
- Created release
- Enhancements to existing features:
- Reduced coupling of
Model
andLogic
in the implementation of the Recurrence feature. #148 - Wrote unit tests for all added storage components that support storage of the contents of
TaskList
. #134 - Wrote unit tests for the logical components of the Sorting feature, and updated various test files to fix bugs after correcting the
equals
method ofModelManager
.#248
- Reduced coupling of
- Documentation:
- User Guide:
- Developer Guide:
- Updated the model architecture diagram to include the newly added model components of Lifebook. #234
- Added implementation details of the
Add Task
feature. #120 - Added user stories, use cases, and manual testing for the features I implemented #37, #234, #259
- Contributed to the “Effort” section of the appendix #276
- Community:
- Other contributions:
- Contributed to the creation of Lifebook’s demonstration video (script and voiceover).