christopher dahl

2026

canvas helper

browser extension and grade engine

canvas helper is a browser extension that puts course navigation, assignments, planning and grade calculations in one place. it uses the canvas session you already have open, pulls data from the api, and shows it in its own ui with a separate grade engine.

  • javascript
  • chrome mv3
  • canvas api
  • service workers
  • unit tests
canvas helperwhat-if grades
coursework86%

70% of course

final exam90%

30% of course

example projection87.2%
an example of a weighted what-if grade calculation.

working inside canvas

content scripts (manifest v3) build the course pages, and a background service worker does the extension's other jobs. requests to the canvas api go through your existing logged-in session. settings, cached data and drafts you can recover are all saved in local storage.

grade math with real course rules

the engine knows about weighted and unweighted assignment groups, excused assignments, work that's been left out, and groups that don't have any graded submissions yet. drop rules still work when assignments are worth different amounts of points, and some assignments are marked so they never get dropped.

what-if grades and planning

what-if scores go through the exact same engine as your real grades. it also figures out grade trends, gpa weighted by credits, and what you'd need on the final to hit a target. the logic has javascript tests that run on their own, without canvas.

the thread through my work

most of the work was making the projections match how a course is actually graded, edge cases and all. if a drop rule or a weight is off, the projected grade is wrong.

development history, from 2019