Ewan's personal package monorepo — TypeScript/Svelte packages managed with pnpm workspaces, Rust tools via Cargo + Nix flake, and Python utilities.
Full documentation at docs.ewancroft.uk.
🧶 Also available on Tangled
| Package | Description |
|---|---|
@ewanc26/tid |
Zero-dependency AT Protocol TID generation |
@ewanc26/atproto |
AT Protocol service layer |
@ewanc26/ui |
Svelte UI component library |
@ewanc26/utils |
Shared utility functions |
@ewanc26/noise |
Deterministic value-noise generation |
@ewanc26/noise-avatar |
Noise-based avatar generation |
@ewanc26/bismuth |
Convert pub.leaflet / site.standard.document records to Markdown |
@ewanc26/svelte-standard-site |
SvelteKit library for site.standard.* AT Protocol records |
@ewanc26/pds-landing |
Svelte components for an AT Protocol PDS landing page |
@ewanc26/supporters |
Ko-fi supporter display backed by AT Protocol |
@ewanc26/wafrn-theme |
WAFRN CSS theme — Catppuccin terminal aesthetic |
@ewanc26/tangled-sync |
CLI for syncing GitHub repos to Tangled |
malachite |
Music listening history → AT Protocol scrobble importer (CLI) |
malachite-web |
Music listening history → AT Protocol scrobble importer (web frontend, private) |
nix-config-tools |
Nix config management tools (Rust) |
llm-analyser |
.docx analysis with Ollama (Python) |
Several of these packages ship as free, browser-based apps — no accounts, no tracking, nothing leaves your machine except to your own PDS. They live at croft.click:
| Tool | What it does |
|---|---|
| Malachite | Import Last.fm and Spotify listening history into Teal |
| Opal | Convert Twitter, Mastodon, Threads, and Nostr posts to Bluesky |
| Jasper | Import Instagram photos, stories, and videos to Grain or Spark |
| Bismuth | Convert ATProto richtext-block documents to Markdown |
| Tourmaline | Analyse your Teal.fm scrobbles and find your listener archetype |
All of this is free and open source, built and maintained in my spare time. If any of it is useful to you, a one-off tip or a monthly sponsorship keeps it going:
Not up for that? Starring the repo, filing a good bug report, or pointing someone at croft.click helps just as much.
AGPL-3.0-only (TypeScript/Svelte) · MIT (Rust)