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 refresh command is executed.
      • Reimplemented TaskList with some new interfaces to fix this.
    • 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 Design and Implementation sections.
  • 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 master branch.
    • 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