Nguyen Viet Anh's Project Portfolio Page
Project: Vimification
Vimification is a desktop app built for Vim enthusasts to manage tasks and deadlines, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI).
Contributions
Given below are my contributions to the project:
-
Code contribution
-
Features implemented
-
Parsers
- Ported the parsers used in iP to tP, and added some enhancement to theirs core implementation.
- The parsers are written in a declarative style, instead of using regex - this improves maintainability as the requirements constantly change during different stages of the project, and regex is not easily modifiable for new changes.
-
Macro-related commands
- Allows the user to define, list and delete macros.
-
Undo command
- Allows the user to undo the previous command that modifies the underlying data of the application.
-
-
Enhancements implemented
-
Atomic execution of commands
- A command that modifies the underlying data of the application should succeed or fail entirely without making any modification. It must not leave the data in an intermediate (and potentially invalid) state.
- Refactored the command classes written by DerenC and liujiayue314.
-
Data modification after filtering and sorting data
- In v1.3, after filtering and sorting displayed data, commands that modify the underlying data cannot work until
refreshcommand is executed. - Reimplemented
TaskListwith some new interfaces to fix this.
- In v1.3, after filtering and sorting displayed data, commands that modify the underlying data cannot work until
-
Redesigning the project’s architecture
- Redesigned the project’s architecture for a clearer barrier between pure business logic and ui management, and separated implementation details from higher-level API.
-
Testing
- Wrote test cases for the parsers and commands. Test coverage increased by roughly 30%.
-
Tooling
- Set up GitHub actions to be suitable for the team’s workflow.
- Set up CodeCov to keep track of testing coverage.
-
-
Contribution to the UG
- Polished the User Guide after other members wrote it.
- Added a section about the macro feature.
-
Contribution to the DG
- Designed and added multiple diagrams to the document.
- Wrote
DesignandImplementationsections.
-
Contribution to team-based tasks
- Managed the team’s GitHub repo and general workflow.
- Helped resolve merge conflicts between team members to ensure a working code base on
masterbranch. - Created milestones, reminded team members to create issues and pull requests as per the requirement of the module.
-
Review/mentoring contributions
-
Contribution beyond the project team
- Answered questions on the forum: #294