Project: MODTrek

MODTrek is a desktop application for managing a typical NUS Computer Science student’s modules and degree progression, optimised for use via a Command Line Interface (CLI). The app provides a convenient platform for students to easily access and update their modules within presses of a keyboard.

Given below are my contributions to the project.

  • Code contributed: RepoSense link

  • Enhancements implemented:
    • New feature: GUI Implementation
      • What it does: MODTrek GUI provides a user-centric interface for users to add and track their modules using keyboard commands. The GUI consists of the CLI Section (right panel of app) that accepts user input and displays the visual output of the execution of commands in the Results Section (left panel of app).
      • Highlights: Implemented the GUI by creating controllers for MODTrek UI components (e.g. CliSection, ResultsSection, ModuleCard etc) that encapsulate methods for dynamic rendering of data. These components are constructed from primary components provided by JavaFX library using FXML and styled them with CSS. Footer buttons implemented in the Results Section to toggle between the different subsections (Degree Progress, Module List, Module Search) and show the current active subsection.
    • New feature: Degree Progress Section
      • What it does: Displays a summary of the degree progression which includes the total MCs completed, current CAP and a detailed breakdown of the completion status of each requirement.
      • Justification: A crucial feature in MODTrek which calculates and displays the user’s degree progress.
      • Highlights: Created the donut chart which captures user’s degree progress data in a graphical view.
      • Credits: Skeleton implementation of donut chart taken from this stackoverflow post.
    • New feature: Module List Section
      • What it does: Displays all the modules added by the user and tracked by the app thus far.
      • Justification: A must-have in any typical module tracker. The app generates statistics concerning the user’s current degree progress based on the modules added in the module list.
      • Highlights: Modules are displayed in groups based on the current active sorting criteria (year, code, credits, grade or tag). Each module is displayed as a card showing all the attributes of the module (code, year-semester, credits, grade, tags). Clear distinction of completed and incomplete modules in the UI. Implemented dropdown menu to toggle between the different sorting criteria and show the current active criteria.
    • New feature: Module Search Section
      • What it does: Displays modules satisfying a certain set of filters provided by the user in the find command.
      • Justification: This feature enables users to locate specific modules without having to go through the entire module list.
      • Highlights: Displays a set of filters that is currently applied to the list of modules for ease of reference, following by the set of filtered modules displayed as cards.
    • Additional work (out of scope of CS2103T): GUI Mockups, Logo Design
      • Highlights: Enhances the UI/UX experience, aesthetics and credibility of the app. Mockups provide a blueprint for FXML/CSS implementation of the GUI.
  • Documentation:
    • User Guide:
      • Created product screenshots for GUI overview and features
      • Collated UG bugs to fix (Examples: 1, 2)
    • Developer Guide:
      • Updated UML diagram and description for UI Architecture.
      • Added explanation and diagrams for ‘View progress/modules’ feature
      • Added use cases
      • Added instructions for manual testing
  • Contributions to team-based tasks:
    • Transferred documentation from team’s collaborative doc to markdown file
    • Managed JAR file releases for v1.2 and v1.3
    • Created video demo for v1.2
    • Created demo screenshots for v1.3
  • Review/mentoring contributions:
    • Reviewed PRs (Examples: 1, 2)
    • Suggestions on implementation and improvement of features (Examples: 1, 2, 3, 4)
    • Bug catching (Examples: 1)
  • Contributions beyond the project team:
  • Tools:
    • JavaFX, FXML, CSS (for GUI implementation)
    • Figma (for GUI mockups)