Bill's Project Portfolio Page
Project: TaskBook
TaskBook is a desktop address book and task assignment application used for efficiently managing contacts and tasks.
Given below are my contributions to the project.
- New Feature: Added Task and Tasklist models (#159).
- What it does: Task model encapsulates an individual task that can be added and displayed.
- Justification: This feature improves the product significantly because it serves as the foundation for Task functionalities.
- Highlights: The feature is defensively written such that all Tasks follow a standardised format. The model follows OOP principles closely, and was implemented with the intention of allowing for the extension of custom tasks easily.
- New Feature: Added Storage for Tasks (#126).
- What it does: TaskBookStorage allows for the storage of Tasks in a JSON format.
- Justification: This feature allows for the saving and loading of Tasks so that users can reopen the application to their last saved state.
- Highlights: The feature is defensively written to prevent the save file from becoming corrupted. Furthermore, the storage of Tasks is independent of storage of Contacts even though they are in the same JSON file, this minimizes dependencies between them and thus possible errors or conflicts. The storage of Tasks also uses Jackson’s
@JsonTypeInfo
and@JsonSubTypes
for seamless saving and loading of Tasks while maintaining the specific Task subtype. - Credits: Integrated Task storage into existing Contact storage implemented in AB-3. Used annotations from the Jackson library.
- New Feature: Added self-assignment for Tasks (#178).
- What it does: Since all tasks must be attached to a contact, this feature allows the user to self-assign tasks that are not assigned to or by another person.
- Justification: The static Myself person is a constant that is not stored in the contact list and cannot be edited by the user. This ensures that the static Myself person cannot be incorrectly edited by the user.
- Highlights: The feature is defensively written to prevent the static Myself person from becoming corrupted by the user. This ensures that the self-assignment commands do not break as they rely on the static Myself person.
- Team tasks:
-
Code contributed: RepoSense link
- Documentation:
- User Guide:
- Developer Guide: