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.
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.
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.
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.
A clap-based command line wrapper around the data-processing crates — CSV parsing, field normalisation, deduplication, and Markdown rendering from one binary.
RFC 4180 CSV parsing compiled to WebAssembly. Handles quoted fields, embedded commas and newlines, and escaped quotes, returning a JSON 2D array.
Merges records from several sources into one deduplicated set in WebAssembly, keeping the Rust structs field-for-field identical to their TypeScript counterparts.
Text diffing and block alignment on top of the `similar` crate, exposed to JavaScript with the same operation codes the TypeScript side already used.
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.
CommonMark to HTML via pulldown-cmark, with slugged heading anchors, used to turn the repo's Markdown content into pages at build time.
The messy-input layer: regex-backed normalisation of dates, licences, numeric parameters, free text, and compute figures into one canonical shape.
Small shared helpers — regex escaping and slug generation — kept in Rust so the WebAssembly and native builds cannot drift apart.
The smoke test for the toolchain: one exported function that proves wasm-pack, the workspace, and the JS bindings still build end to end.