Project Overview

This CLI tool helps students track their assignments and grades efficiently. Built with C++ and Python, it features a user-friendly interface and integrates with popular learning management system EdStem.

Key Features

Assignment Tracking

Track all your EdStem assignments with due dates, status, and completion progress

Grade Analytics

Monitor your grades and performance across different courses and assignments

Smart Filtering

Filter assignments by course, due date, status, or completion level

Course Management

Organize and view assignments across multiple courses in one place

CLI Interface

Efficient command-line interface for quick access and automation

EdStem Integration

Direct integration with EdStem API for real-time data synchronization

Technical Implementation

Core Architecture

  • C++ for high-performance CLI application core
  • Python for API integration and data processing
  • Modular design with separation of concerns
  • Cross-platform compatibility (Windows, macOS)
  • Efficient memory management and error handling

API Integration

  • RESTful API communication with EdStem platform
  • HTTP client implementation for data fetching
  • JSON parsing and data serialization
  • Authentication token management
  • Rate limiting and error retry mechanisms

Data Management

  • Local data caching for offline functionality
  • Data synchronization with remote EdStem API
  • Configuration file management

Challenges & Solutions

API Authentication & Rate Limiting

Challenge: Managing EdStem API authentication tokens and handling rate limits effectively.

Solution: Implemented intelligent token refresh mechanism and request queuing system to respect API limits while maintaining responsive user experience.

Cross-Platform Compatibility

Challenge: Ensuring the CLI tool works consistently across different operating systems and environments.

Solution: Used platform-agnostic libraries and thorough testing on Windows and macOS systems with proper build configurations.

Data Synchronization

Challenge: Keeping local cached data in sync with live EdStem data while handling network interruptions.

Solution: Implemented robust sync algorithms with conflict resolution for uninterrupted workflow.