Overview
Canvas–Notion Sync is a Chrome extension that automatically synchronizes Canvas assignments into Notion on a 30-minute schedule. It bridges two popular productivity tools to streamline student workflow.
This project demonstrates proficiency in external API integration, encryption, reliability engineering, and building tools that integrate seamlessly with existing workflows.
Key Features
Automated Sync
Fetches Canvas assignments every 30 minutes and automatically syncs them to Notion without manual intervention.
AES-GCM Encryption
Implements AES-GCM encryption to protect sensitive data like API keys and credentials stored locally.
Rate Limiting
Engineered robust rate limiting (25 req/s burst, ~10 req/s sustained) to respect API limits and prevent throttling.
Retry & Backoff
Implements intelligent retry strategies: 429 Retry-After headers, 409 exponential backoff, limited 5xx retries.
Error Handling
Comprehensive error states with console logging and user-friendly UI error messages for debugging.
Conflict Resolution
Reduces sync conflicts with batching and sequential fallback strategies.
Technical Highlights
Reliability Engineering
This project showcases production-grade reliability practices: rate limiting respects API constraints, retry/backoff strategies handle transient failures gracefully, and observability (logging + error states) enables debugging.
Security
Implements AES-GCM encryption for sensitive data at rest, protecting API keys and user credentials from unauthorized access.
User Experience
Focuses on transparent operation: UI error states inform users of issues, batching reduces conflicts, and sequential fallback ensures data integrity even when APIs are overloaded.
What I Learned
- API Reliability: Understanding rate limits, retry strategies, and backoff mechanisms for robust API integrations.
- Encryption: Implementing AES-GCM for protecting sensitive credentials and data.
- Chrome Extension APIs: Building extensions that interact with multiple web services seamlessly.
- Observability: The importance of logging and error states for user support and debugging.
- Conflict Resolution: Strategies for handling sync conflicts in distributed systems.