A privacy-first browser extension that automatically syncs Gradescope assignments to Google Calendar.
Current Version: v1.9.1 — Available on Chrome Web Store & Firefox Add-ons
- Automatic dashboard discovery: Extracts all assignments from all enrolled courses
- Four intelligent sync mechanisms:
- First-time sync: Immediate sync when you first connect your calendar
- Manual sync: User-triggered sync on-demand
- 24-hour auto-sync: Scheduled background updates (configurable)
- Smart sync on extraction: Instant sync when new assignments detected (60-min cooldown)
- Smart deduplication: Prevents duplicate events for the same assignments
- Upcoming assignments only: Automatically filters out past assignments to keep your calendar clean
- Google Calendar sync: Creates rich calendar events with assignment details and direct Gradescope links
- iCal export: One-time export for Outlook, Apple Calendar, and other calendar apps
- RFC 5545 compliant .ics files
- Enhanced Outlook compatibility with clickable links
- Respects all your customization preferences
- Event colors: Choose from 11 Google Calendar colors to match your style
- Flexible reminders:
- None, single (1 day), double (1 day + 1 hour), or custom (up to 3 reminders)
- Customizable reminder timing to fit your workflow
- Display timing:
- Deadline time (default): Shows event at actual due time (e.g., 11:59 PM)
- All-day event: Shows at top of calendar for maximum visibility
- Dark mode support: Toggle between light and dark themes for comfortable viewing
- Interactive onboarding: First-time user tutorial to get you started quickly
- Context-aware UI: Smart interface that adapts to your current Gradescope page
- Zero-server architecture: All processing happens locally in your browser
- Cross-browser support: Chrome/Chromium (Manifest v3) and Firefox compatible
- No external servers: All data processing occurs locally in your browser
- No data collection: We never see your assignments, grades, or personal information
- Direct API integration: Your data goes directly from your browser to Google Calendar
- Minimal permissions: Only accesses Gradescope and Google Calendar APIs
- Open source: Full transparency, you can inspect the code yourself
- One-time setup: Install the extension and connect your Google Calendar via secure OAuth authentication
- Automatic extraction: Visit any Gradescope page - assignments are automatically discovered and extracted
- Instant first sync: On first authentication, all extracted assignments immediately sync to your calendar
- Stay updated automatically: Four sync mechanisms keep your calendar current:
- First-time sync: Immediate sync when you connect your calendar
- Manual sync: Click "Sync to Calendar" button anytime
- 24-hour auto-sync: Daily background updates (can be disabled in settings)
- Smart sync: Instant sync when new assignments are detected (60-min cooldown)
- Customize your events: Set colors, reminders, and display timing in the options page
- Export if needed: Generate iCal files for Outlook, Apple Calendar, or other calendar apps
- Cross-device access: Calendar events sync to all your devices via Google Calendar
- Fixed visual bug with extracted assignment count and fixed first stage of redundant deduplication logic
- Fixed Firefox compatibility for iCal export (message passing bug fix)
- iCal export feature for Outlook, Apple Calendar, and other calendar apps
- RFC 5545 compliant .ics file generation with UTC format
- Enhanced Outlook link accessibility (URL in LOCATION field)
- Title format consistency with Google Calendar API events
- Proper description newline formatting
- Modular architecture refactor for improved maintainability
- Improved pin detection for browser toolbar
- Smart sync on extraction (instant sync for new assignments)
- Added dark mode support with theme toggle
- CSS variable-based theming system
- Consistent dark mode across popup and options pages
- 24-hour auto-sync intervals with configurable settings
- Auto-sync toggle in options page
- Chrome Web Store publication
- Core calendar sync functionality
- OAuth authentication and token management
- Competitive analysis and architecture planning
- Gradescope assignment data extraction (dashboard + individual courses)
- Google Calendar API integration with OAuth 2.0
- Background sync automation (daily intervals + smart detection)
- Rich calendar event creation with assignment metadata
- Smart deduplication and error handling
- Event customization (colors, reminders, display timing)
- Dark mode support with theme system
- iCal export for non-Google calendar apps
- Cross-browser compatibility (Chrome/Chromium + Firefox)
- Privacy policy and web store preparation
- Chrome Web Store & Firefox Add-ons publication
- Content Scripts: Extract assignment data from Gradescope pages with intelligent parsing
- Background Service Worker: Handles OAuth authentication, calendar sync, and auto-sync scheduling
- Event Cache: Performance layer with 10-minute refresh cycle, handles up to 1000 events
- Dual Authentication Strategy:
- Chrome/Chromium: Native
chrome.identity.getAuthToken()for fast authentication - Firefox: PKCE OAuth flow with refresh tokens
- Chrome/Chromium: Native
- Local Storage: Stores assignment data and user preferences in browser
- Google Calendar API v3: Creates and manages calendar events with extended properties for deduplication
- iCal Generator: RFC 5545 compliant .ics file generation for universal calendar compatibility
- Zero external dependencies: No servers, databases, or third-party services
- Assignment discovery: Requires visiting Gradescope pages to detect new assignments (auto-extracts on page load)
- Course coverage: Works with standard Gradescope course layouts
- Google Calendar sync: Requires Google account with Calendar access
- iCal export: One-time export without deduplication tracking (re-importing the same .ics file will create duplicates)
Full privacy policy available at: Privacy Policy
- Issues: Report bugs via GitHub Issues
- Email: [email protected]
- Primary audience: Gradescope users worldwide
- Chrome/Chromium or Firefox browser
- Google Cloud Console project with Calendar API enabled
- Basic understanding of browser extension development (Manifest v3)
- Clone this repository
- Update
CLIENT_IDinbackground.jswith your Google OAuth client ID - Load extension in developer mode:
- Chrome: Extensions → Developer Mode → "Load unpacked" → select
src/folder - Firefox: about:debugging → "This Firefox" → "Load Temporary Add-on" → select
manifest.json
- Chrome: Extensions → Developer Mode → "Load unpacked" → select
- Test with your actual Gradescope courses
When making changes, test:
- Dashboard extraction (multiple courses)
- Individual course page extraction
- Calendar event creation with custom colors/reminders
- All four sync mechanisms (first-time, manual, 24-hour, smart sync)
- iCal export functionality
- Dark mode toggle
- Cross-browser compatibility (Chrome + Firefox)
Contributions welcome! Please read the code to understand the privacy-first architecture before making changes.
MIT License - feel free to fork and improve!
Built for UC Berkeley students. Usable by all Gradescope users. Inspired by the need for better assignment tracking without compromising privacy.