Cow is a desktop project management application where you can manage both tasks and contacts, as well as assign tasks to contacts and vice versa. It also features a calendar to provide an easy visual reference of tasks chronologically.
Cow has an emphasis on interaction using Command Line Interface ("CLI"). It is written in Java, and it has a Graphical User Interface ("GUI") created with JavaFX. Cow consists of approximately 14k LoC in Java.
Note
|
Cow used Address Book (Level 4) as a base for development. |
-
Major enhancement: added the ability to edit, delete and batch delete tasks
-
What it does: This feature allows you to edit tasks as well as delete one or more tasks at a time
-
Justification: This feature improves the product significantly because sometimes you may add duplicate tasks or add tasks with wrong details, thus task editing is essential. Moreover, sometimes you may need to delete more than one tasks at a time. Instead of doing it one-by-one which is time-consuming, they can do it in one command instead.
-
Highlights: This enhancement was built such that the command format between tasks and contacts are similar to improve your experience. Moreover, the batch delete tasks syntax is also built on top of the original single delete command. Efforts were taken to ensure that code duplication remains minimum between delete and batch delete to ensure that the code is maintainable.
-
-
Minor enhancement 1: Updated sample tasks to include tasks as well assignment between some tasks and contacts
-
What it does: Upon initial launch, these sets of contacts, tasks and assignment thereof are loaded as default data.
-
Justification: To get familiar with Cow, it is good to have some sample data to play and experiment with. Once you are ready, you can run
clear
to clear all the data in Cow. -
Highlights: This enhancement required me to write a helper function inside
SampleDataUtil
to do assignments between tasks and contacts. This is to ensure data integrity by doing a two-way assignment (task-to-person and person-to-task) as one transaction.
-
-
Minor enhancement 2: Added tasks select command to select a task and show its details in the task details pane.
-
What it does: It selects a task from the displayed task list, and show the task in the task details pane.
-
Justification: The space available in the tasks lists is very small, so most times the task name is cut off. In order to see more details, you need a command to select from that list to show in the task details pane.
-
Highlights: This enhancement required me to use an Event already wrote by my teammate,
JumpToTaskListRequestEvent
. In order to use it, I need to be able to understand the documentation written by my teammate. This showcases my ability to work in with modular code written by several developers.
-
-
Code contributed: Collated code at RepoSense
-
Other contributions:
-
Project Management:
-
Managed releases
v1.3.2
andv1.4
(2 releases) on GitHub -
Managed milestone
v1.4
issue tracker on GitHub
-
-
Enhancements to existing features:
-
Enlarged headless framebuffer for GUI tests to 1920x1080 so that GUI unit tests will not fail in Travis CI: #183
-
Refactor all branding from AddressBook to Cow: #183
-
Made sure that when the main window opens, it is big enough to show the calendar pane: #183
-
Added module name in usage messages: #87
-
Allow editing task’s either start or end DateTime: #94
-
-
Documentation:
-
Totally revamped the User Guide: #158
-
Updated the User Guide to include new features: #84
-
Updated the UI class diagram in the Developer Guide: #172
-
Updated the Developer Guide to include the use case of the new features implemented: #84
-
Added diagram to explain how the new features included were implemented: #62
-
-
Community:
-
Tools:
-
Integrated a new GitHub plugin (coveralls) to the project to track test coverage (#50)
-
-
Given below are sections I contributed to the User Guide. They showcase my ability to write documentation targeting end-users. |
Given below are sections I contributed to the Developer Guide. They showcase my ability to write technical documentation and the technical depth of my contributions to the project. |