Projects · 13 total

Everything this monorepo ships.

Web apps, an API Worker, a Rust CLI, and the WebAssembly crates they share — all built from one workspace. 4 are running right now.

This site. A TanStack Start app prerendered to static HTML and served from Cloudflare Pages, with a Pages Function proxying the API and machine-readable indexes shipped next to the pages.

Web
Cloudflare
Live

Posts and short-form notes. Markdown is compiled at build time into a JSON index that both the blog and this homepage read, so there is no database in the request path.

Web
Content
Live

A CV that is one source of data rendered three ways: a styled web page, a print stylesheet, and a JSON payload for machine clients.

Web
Cloudflare
Live

A Hono worker on Cloudflare Workers: health checks, token-authenticated card-description streaming, form submissions backed by D1, per-route rate limiting, and a published OpenAPI document.

API
Cloudflare
Live

A clap-based command line wrapper around the data-processing crates — CSV parsing, field normalisation, deduplication, and Markdown rendering from one binary.

Rust
CLI
OSS

RFC 4180 CSV parsing compiled to WebAssembly. Handles quoted fields, embedded commas and newlines, and escaped quotes, returning a JSON 2D array.

Rust
WASM
OSS

Merges records from several sources into one deduplicated set in WebAssembly, keeping the Rust structs field-for-field identical to their TypeScript counterparts.

Rust
WASM
OSS

Text diffing and block alignment on top of the `similar` crate, exposed to JavaScript with the same operation codes the TypeScript side already used.

Rust
WASM
OSS

Reads EXIF metadata — camera settings, timestamps, and optional GPS — straight out of an image buffer in the browser, so photo bytes never leave the tab.

Rust
WASM
OSS

CommonMark to HTML via pulldown-cmark, with slugged heading anchors, used to turn the repo's Markdown content into pages at build time.

Rust
WASM
OSS

The messy-input layer: regex-backed normalisation of dates, licences, numeric parameters, free text, and compute figures into one canonical shape.

Rust
WASM
OSS

Small shared helpers — regex escaping and slug generation — kept in Rust so the WebAssembly and native builds cannot drift apart.

Rust
WASM
OSS

The smoke test for the toolchain: one exported function that proves wasm-pack, the workspace, and the JS bindings still build end to end.

Rust
WASM
OSS