Project: ModMate

Table of Contents

  1. Introduction
  2. Code Contributed
  3. Project Management
  4. Features
    1. General
    2. Commands
    3. Networking
    4. UI
  5. Documentation
    1. General
    2. User Guide
    3. Developer Guide
  6. Community
  7. Tools

Introduction

ModMate is a command-line application that leverages the NUSMods API and was developed to help NUS students manage academic schedules and module information efficiently. It streamlines timetable organization, module bookmarking, and data exploration, offering a user-friendly solution for academic planning.

Learning about UML diagrams during a tutorial

Learning about UML diagrams during a tutorial


Code Contributed


Project Management

  • Set internal deadlines to ensure timely progress and maintain alignment with the overall project timeline.
  • Delegated tasks effectively to leverage team strengths and maximize productivity.
  • Regularly reminded teammates of pending tasks to maintain momentum and avoid delays.
  • Reviewed teammates’ PRs thoroughly, providing constructive feedback to improve code quality and functionality.
  • Fixed numerous bugs to enhance application stability and user experience.
  • Applied code quality principles like SLAP to ensure maintainable and readable code.
  • Refactored code extensively to improve modularity and adhere to best practices.
  • Encouraged team collaboration and adherence to high standards for a successful project outcome.

Features

General

Feature Description Justification Links
Input Handling Implemented InputParser, Input, Argument, and Flag for structured input parsing. Improves input validation and parsing for better user experience and error handling. #185, #186
Command Parsing Developed CommandParser to streamline command execution. Centralizes command handling logic for better maintainability and scalability. #186

Commands

Feature Description Justification Links
SearchModCommand and Supporting Classes Enables users to search for modules by code or name with filters for faculty, semesters, etc., supported by utilities like SearchUtil and SearchFlagBuilder. Provides efficient module search functionality with reusable utilities and flag handling. #88, #186, #180

Networking

Feature Description Justification Links
JSON Parsing Implemented JSONParser, JSONKey, and specialized parsers (ModJSONParser, etc.) for handling API responses. Ensures accurate and type-safe processing of JSON data from the NUSMods API. #57, #52
HTTP Utilities Developed HttpUtil for handling HTTP requests and responses. Simplifies and standardizes HTTP communication with external APIs. #28

UI

Feature Description Justification Links
UI Enhancements Refactored the UI class to improve modularity and maintainability, enabling easier integration of new features. Enhances the overall structure and readability of the UI codebase. #185
Pagination Added Pagination to improve user experience for commands like SearchModCommand. Allows users to view large sets of data in manageable chunks. #88

Documentation

General

Contribution Description Justification Links
Initial Structure Designed the skeleton structure and implemented most of the documentation for the User Guide and Developer Guide. Provides a strong foundation for comprehensive and organized project documentation. #50
Jekyll Integration Integrated Jekyll and the “Just the Docs” theme for project documentation. Simplifies navigation and improves readability of the documentation. #92

User Guide

Contribution Description Links
Help Command Added documentation for the help feature. #194
Search Module Command Added documentation for the searchmod feature. #88
Cosmetic Tweaks Improved clarity and formatting for exit commands. #74

Developer Guide

Contribution Description Links
Search Module Added implementation details and diagrams for the searchmod feature. #88

Community

Contribution Description Links
PR Reviews Reviewed PRs with non-trivial comments. #12, #32
Bug Reports Reported bugs and suggestions for other members. #169, #158, #146, #145

Tools

Tool Description Links
Jekyll Used for generating static documentation sites. #92
Just the Docs Integrated as the theme for the documentation. #92