Software engineer building developer tools, rendering systems and framework infrastructure in Rust and TypeScript.
A description becomes source, source becomes a compiled call, a call becomes elements, elements become solved boxes, and boxes become pixels. I have shipped something at every one of those levels.
Rust forms the core of the current work. TypeScript is the surface people use. Across six published npm packages, that work covers React composition, compiler tooling, layout and server-side rendering.
meo-canvas: declarative scenes to pixels
A Rust renderer with a Node.js surface. It resolves CSS flexbox, grid and block layout with Taffy, shapes text, paints through Skia, and exports raster, vector, animated and multi-page formats. Layout, text shaping, painting and encoding all happen in Rust; the Node surface describes a scene and asks for pixels.
await Root({ children: Text('Generated server-side, no browser') })meo-skia-canvas: Canvas 2D below the browser
A Skia-backed HTML Canvas 2D API for Rust and Node with parallel rendering,
PDF and SVG vector export, wide-gamut colour, HDR output, and prebuilt platform
binaries. The Rust crate lets other renderers link it directly, which is how
meo-canvas paints.
The project began as a fork of Christian Swinehart's skia-canvas. The original design and lineage remain explicit in the repository.
MeoNode: React composition without JSX
@meonode/ui replaces JSX with typed function
composition while retaining React context, Server Components and opt-in
per-node memoization. Its optional companion,
@meonode/compiler, is an
experimental Rust/SWC plugin that lowers call sites at build time.
@meonode/mui puts MUI components
behind the same factories.
Div({ padding: 24, children: H1('Hello World') })MeoCord: structured Discord applications
A TypeScript framework that brings controllers, services, guards, dependency injection, a CLI and testing utilities to discord.js.
@Command()
class HelloCommand {}Chu Tao is a deployed multi-service Discord bot
for Genshin Impact, Honkai: Star Rail, Zenless Zone Zero and Neverness to
Everness. It consists of a MeoCord bot, a Rust REST API on axum and SeaORM, and
a Next.js portal for OAuth and account linking. Its cards are rendered
in-process by meo-canvas, without a browser.
Rust · TypeScript · Skia · Taffy · SWC · WebAssembly · Node.js · React · axum · PostgreSQL · Redis · RabbitMQ · Elasticsearch · Docker
If these packages are useful to you, a coffee helps cover their infrastructure and the time that goes into maintaining them.


