Jiahe's Project Portfolio Page
Project: SOChedule
Overview
SOChedule is a one-stop solution for NUS School of Computing (SoC) students to manage their tasks and events effectively. Targeted at users who can type fast and prefer typing to mouse input, SOChedule is optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
SOChedule was morphed from a sample project named AddressBook Level 3. This application was developed by my teammates and me for the Software Engineering module coded CS2103 in School of Computing, National University of Singapore (NUS).
Summary of Contributions
New Feature
- Getting today’s tasks/events:
today_task
,today_event
- Sample relevant pull request: #216
- What it does:
-
For task, this feature allows user to check out all the tasks whose deadline is on today by filtering out all the relevant tasks from the task list.
-
For event, this feature allows user to check out all the events that is happening on today (i.e. the time duration of the event has overlap with today) by filtering out all the relevant events from the event list.
-
- Justification:
-
For task, our target user (SoC student) may have a lot of assignments or homework with deadline. This feature can help them check the assignments or other tasks that they need to complete today, so that they do not need to manually check which are the tasks that due today.
-
For event, our target user (SoC student) may be overwhelmed by different events (e.g. Career Talk, Interview, etc). This feature will help them check all the events happening today, so that they do not need to manually check which are the events they need to prepare for today.
-
Enhancement Implemented
- Morphing the Logic component from AddressBook to SOChedule
-
What it does:
Morphed the Logic component, including
add
,delete
,list
andfind
features intoadd_task
,delete_task
,done_task
,list_task
,list_event
,find_task
andfind_event
and their corresponding unit tests to the ones usable for SOChedule. -
Justification:
This enhancement is necessary and fundamental as the Logic component acts as the bridge between the input from users and Model.
-
Highlights:
During the morphing process, I need to check through the original codebase and understand it comprehensively. Besides morphing the code, I also added a check in
AddTaskParser
so thatTask
with pastDeadline
cannot be added.
- Optimizing the output for
list
command to handle the case for empty list-
Sample relevant pull requests: #336
-
What it does:
Changes the output message of listing tasks/events when corresponding task/event list is empty from “Listed all tasks” to “There is no task/event present”.
-
Justification:
This enhancement is important as the message “Listed all tasks” may happen when there are some tasks/events in the list but are not shown in the UI yet due to possible sluggishness. Under this circumstance, the output message “There is no task/event present” will inform user about the fact that the task/event list is empty.
-
Code Contributed
Contributions to team-based tasks
- Morphed the task part of Logic component into our team project
- Managed release v1.3.1.
Review/mentoring contributions
- PR reviewed: #41 #43 #44 #45 #50 #54 #79 #87 #89 #90 #96 #99 #101 #118 #134 #135 #136 #161 #177 #218 #313 #315 #320 #323 #327 #330 #340 #363 #380 #382
Contribution beyond the project team
Contributions to the UG:
- Wrote documentations about
add_task
,delete_task
,list_task
,list_event
,find_task
,find_event
,today_task
andtoday_event
. - Wrote documentations for the part General Commands.
Contributions to the DG
- Updated
Logic
diagram. - Wrote three overview sections for SOChedule, Task and Event.
- Added implementation details of
add_task
,find_task
,find_event
,today_task
,today_event
. - Added use cases and instructions for manual testing
for
add_task
,delete_task
,list_task
,list_event
,today_task
,today_event
,find_task
,find_event
. - Updated the NFR part of Developer Guide.