Canvas Companion
macOS menu bar app · Electron, React, TypeScript, Tailwind CSS · 2026 - present · Built and packaged
The question
Canvas buries the one thing students check most, what's due and when, behind clicks and tabs. What would it take to make every deadline one glance away instead of six clicks deep? I was tired of missing the forest for the login screens, so I built the view I wanted, right in the menu bar.
What I built
- Syncs the Canvas REST and GraphQL APIs to surface assignments, submission status, and deadlines the moment the Mac wakes from sleep
- Schedules per-deadline notifications with configurable lead times and deduplication, so reminders fire when they're useful and never twice
- Buckets everything by urgency in a dashboard, with a fuse.js command palette for jumping to any course or assignment
- Dark and light mode
The Electron build is hardened with context isolation, sandboxing, and a strict CSP. Your Canvas access token never touches a config file; it lives in the macOS Keychain. Core logic is covered by Vitest unit tests.
What I found
The build was only half the work. I wrote the full PRD and TRD, made every design and UX call, and then took it past my own desk: I pitched UW IT Learning Technologies on institutional licensing for the entire 35,000+ student campus. Turning a personal tool into something an institution could actually run is a different problem from writing the code, and that pitch is where I learned it.
Where it stands
Feature-complete and packaged as an unsigned .dmg for personal use. It is not distributed or deployed, and the campus-wide version is a pitch, not a shipped product.
The repository is private. If you'd like a walkthrough, email me.