Project: Gim

Gim is a desktop app for managing gym exercises, optimized for use via a Command Line Interface (CLI) while still having the benefits of a Graphical User Interface (GUI). If you can type fast, Gim allows you to keep track your exercises and Personal Records in an efficient way.

Example usages:

  • as a tracking tool to keep track of completed exercises
  • as a tracking tool to keep track of your personal records
  • as a workout generator to generate exercises based on your personal records

Given below are my contributions to the project.

  • New Feature: Sort command (PR #100)
    • What it does: Allows users to sort any displayed list of exercises by date of completion.
    • Justification: This feature is essential as sorting the exercises by date of completion allows users to better track their workout progression.
    • Highlights:
      • Tracing of the code base was necessary to ensure that the sort command is executed on the displayed list of exercises without altering the default ordering of exercises stored in the system.
      • A defensive copy of the default ordering of exercises based off entry date has to be maintained to allow users to toggle between a sorted ordering and the default ordering.
      • Utilise Open-Closed Principle to accommodate other sorting orders should sorting criteria change in the future.
  • Code contributed: RepoSense Link

  • Enhancements to existing features:
    • Updated the GUI colour scheme (PR #111)
    • Added a welcome message when the application is launched (PR #113)
    • Added Sets as a field of an Exercise (PR #53, PR #62, PR #72)
    • Added unit tests for Sets (PR #62)
  • Documentation:
    • User Guide:
      • Added documentation for :sort command (PR #125)
      • Added documentation for :filter command with some edits to existing documentation as per discussed by team (PR #133)
      • FAQ (PR #133)
    • Developer Guide:
      • Added implementation details for :sort command (PR #101)
      • Added user stories, use cases and instructions for manual testing as per discussed by team (PR #211)
  • Contribution to team-based tasks:
    • Reviewed Team Members’ PRs.
    • Participated and contributed to weekly team meetings.
  • Tools:
    • PlantUML: Creating UML diagrams.