Projects
Notekettle
I built this as a more intuitive, cloud-based alternative to MuseScore Studio: a music notation editor that runs in the browser. You can enter notes, import and export MusicXML, play back the score and export it to PDF.
How it works
- Every edit is a reversible operation on a score model, which is what gives undo and redo.
- MusicXML features the editor does not support are kept and reported instead of being dropped on import.
- Scores are drawn with Verovio and saved in the browser, and they can be downloaded as files.
TypeScript, Vite, Verovio
OC Transpo tracker
A map of Ottawa transit with live vehicle positions, departure boards with real-time delays and route shapes, built on the public schedule data.
How it works
- Schedule data is read and indexed in the browser, then cached so repeat visits skip the download.
- The interface works in English and French, and keeps the transit agency’s own stop and route names as published.
- Route lines are matched onto OpenStreetMap roads, and each bus shows its model, worked out from its fleet number.
React, Vite, Mapbox GL
Legistatus
I built this as a bilingual alternative to election-atlas.ca for Canadian federal politics. It has an interactive riding map, a live seat tracker, MP and Senate directories, voting records, polls and historical election results.
How it works
- It runs on official open data from the House of Commons, the Senate and Elections Canada.
- The interface works in English and French.
- It is a static site: nothing is scraped when a visitor opens a page.
React, Vite, Mapbox GL