Skip to content
EtherCorps

Fig. 03  /  Open source

The reusable parts, in the open.

When I build something general enough to outlive one project, I extract it and publish it. These are the libraries and tools I reach for on client work — maintained in public, under permissive licenses, so you can read exactly what you're depending on.

Public repos3
Primary licenseMIT
01
@ethercorps/sveltekit-og TypeScript Most used

Generate Open Graph images in SvelteKit without JSX, straight from the Svelte compiler — no headless browser. Runs on every major JS runtime with pluggable Satori or Takumi rendering.

~120k downloads / mo
02
Doota Mail SvelteKit · Cloudflare In production

A self-hosted email platform — web client and sending API from one deploy — on any Cloudflare account. Threads as chat, AES-256-GCM at rest, blind-token search over encrypted mail.

doota.dev
03
@ethercorps/un-jinja TypeScript

A runtime-agnostic, zero-dependency Jinja2-style template engine for JavaScript — browsers, Node, Deno, and Workers, HTML-escaped by default.

npm

npm downloads and ★ counts as of August 2026

02

How I contribute

Published, not abandoned
A Extract, don’t invent Everything here earned its place on real client work first. I open-source the part that generalised, not a side project built for stars.
B Maintained in public Issues get answered, dependencies get bumped, and releases are tagged. If I stop maintaining something, I say so and archive it honestly.
C Permissive by default MIT unless a dependency forces otherwise, so you can use these in commercial work without reading the fine print twice.
EtherCorps mascot

Get in touch

I take on a small number of projects at a time.

Tell me what you're building and where it hurts. I'll say honestly whether I'm the right person for it.

Get in touch