Project Portfolio Page – Yang Chenglong
Project Nuke v2.1
Overview
Nuke v2.1 is a simple yet powerful task management application target towards NUS students. Nuke aims to provide a more efficient way to organize the user’s modules and tasks. The user interacts with Nuke using a Command Line Interface (CLI). In its latest versions, it also has a complementary Graphical User Interface version created with JavaFX, though the GUI is still in its Beta stage. Nuke is written in Java, and has about 10, 000 lines of code.
Summary of Contributions
Code contributed: [Functional and Test Code]
Major enhancement:
1. Added the ability to undo/redo previous commands
- What it does: Allows the user to undo all previous commands one at a time. Preceding undo commands can be reversed by using the redo command.
- Justification: This feature improves the product significantly because a user can make mistakes in commands and the app should provide a convenient way to rectify them.
- Highlights: This enhancement does not affects existing commands, but it required an in-depth analysis of the data formation of the current project. The implementation too was challenging as it required to add in a middle step in the main function of the program. I have to make sure that it won’t go wrong and adversely affects the main program.
2. Added the ability to preload the information of all modules provided by NUS
- What it does: Preloads the information of all modules provided by NUS, including module codes and module titles.
- Justification: This feature makes our product more targeted at our intended user(NUS students) more, it also enables the auto-complete features when users are adding their modules by entering module codes, which enhances usability.
- Highlights: This enhancement is based on the json file which is retrieved from the NUSMods API, and it has to deal with the case when there is no relevant json file on the disk, then the program needs to fetch the content from NUSMods API, and if the user has no network connection(which is a very rare case), the program also needs to be compatible with such extreme case and compromises to allow the user to add any modules, even not provided by NUS
- Credits:
- NUSMods API: For providing the API to retrieve the information of all the modules provided by NUS.
- FastJson library: For parsing the json file.
- Commons IO from Apache: For downloading the json file from NUSMods API.
3. Implement the generic Linux filesystem associated command ls
, mkdir
and rm
- What it does: Allow the user to execute the Linux filesystem associated command
ls
to list out directories,mkdir
to create directories, andrm
to remove directories. - Justification: This feature improves the user experience for the user with prior experience on Linux significantly because it reduces a lot of work for the users to remember other commands.
- Highlights: This enhancement does not affects existing commands, and it is actually based on the implementation of existing commands. The program will retrieve the current directory where the user is, and depending on the directory type(Root, Module, Category, Task), it will distribute to the actual command to handle.
Minor enhancement:
Improve the feedback messages shown to the users when listing out all the tasks, add one more column showing if the tasks are done, so that the users would know if they need to work on the task as soon as possible.
Other contributions:
Project management:
Managed releases v1.0
, v2.0
(2 releases) on GitHub
Documentation:
User Guide:
- Documented List modules/categories/tasks and Delete modules/categories/tasks Features. – #122
- Elaborated Add modules/categories/tasks Features. – #117
Developer Guide:
- Documented Add modules/categories/tasks Implementation. – #96
- Documented List Command Implementation. – #208
- Documented Setting Up section. – #221
- Documented Appendix Section. – #211 #214 #215 #220 #221 #223 #226
Contributions to team-based tasks :
- Fix the code to make sure it passes CI on GitHub regularly.
- Handled part of the issues/bugs raised during the PE-Dry run.