Skip to content
← All projects

Pingo

Early — not production ready

A Web Canvas rendering engine designed from scratch.

A high-performance TSX runtime with a deterministic Rust/WASM core, native virtual scrolling and canvas-native text editing, plus a versioned CSS subset with a build-time SCSS/Less pipeline. It ships a shadcn-aligned UI library of ~50 components, and every component doc on the official site is rendered live on canvas by the engine itself.

Overview

Pingo has moved past the early phase of its milestone roadmap: the editing, event, hit-testing and accessibility chain is in place, and the engine now ships real primitives — base elements for text, images and shapes, native virtual scrolling, and canvas-native text editing with IME support. Technical decisions remain settled in `docs/design.md`.

Styling is a versioned CSS subset with predictable cascade semantics, plus a build-time SCSS/Less pipeline so existing stylesheets carry over. On top of that sits a shadcn-aligned UI library of ~50 components — buttons, forms, overlays, data display — all rendered on canvas rather than the DOM.

The official site doubles as the proof: every component doc page embeds live demos rendered in real time by the engine itself, interactive in the browser. What you see in the docs is what is running on Pingo.

What it does

  • High-performance TSX runtime with virtual scrolling as a first-class primitive, not a userland add-on.
  • Deterministic Rust/WASM core behind a versioned binary ABI.
  • Canvas-native text editing: EditContext-first input with a centralized textarea proxy fallback, and deterministic IME record/replay.
  • Platform qualification is explicitly separate from milestone completion — unqualified platforms make no performance claims.

Get started

Requirements: Node.js 22.12+, pnpm 10.33.2, Rust 1.96.0 with the wasm32-unknown-unknown target.

Run the probe from a checkout of the repository

shell
$ pnpm install --frozen-lockfile && pnpm m0:check && pnpm probe:dev