← All projects

CodeCanvas: from file watcher to virtual data sources

September – December 2025 · Core contributor — backend & language support

TypeScriptLanguage Server Protocol (LSP)AST parsingVS Code extension APIs

codecanvas.app ↗

The product

CodeCanvas renders an entire codebase on an interactive canvas — files organized by dependencies and folder structure, with “syntactic zoom”: structural summaries when zoomed out, full code when zoomed in. I joined for a four-month stint in late 2025 to take on the backend side.

The constraint baked into the core

The original architecture was a VS Code extension built around a file watcher: the canvas could only visualize code on the local disk, and the parsing pipeline assumed JavaScript/TypeScript throughout. The two most requested capabilities — reviewing pull requests on the canvas, and supporting more languages — were architecturally impossible, not merely unimplemented.

The rewrite

I rearchitected the core around virtual data sources: everything that could vary by context — how files are enumerated, how content is loaded, how ASTs are produced, which language services answer queries — went behind interfaces, the file watcher becoming one implementation among several (local workspace, pull request, demo content; TypeScript, C#, PHP, Python).

On that foundation I built the full PR-review experience — loading a pull request as a data source and inspecting its changes in context on the canvas — and added Python and C# language support, working end-to-end.

How it ended

I exited in December 2025 before this work shipped publicly. The architecture lesson stands: find the assumption hard-wired through the core, abstract it once, and entire categories of “impossible” features become straightforward.