my pkgs monorepo
1# pkgs
2
3Ewan's personal package monorepo — TypeScript/Svelte packages managed with [pnpm workspaces](https://pnpm.io/workspaces), Rust tools via [Cargo](https://doc.rust-lang.org/cargo/reference/workspaces.html) + [Nix flake](https://nixos.wiki/wiki/Flakes), and Python utilities.
4
5Full documentation at **[docs.ewancroft.uk](https://docs.ewancroft.uk/projects/pkgs)**.
6
7## Packages
8
9| Package | Description |
10|---|---|
11| [`@ewanc26/tid`](./packages/tid) | Zero-dependency AT Protocol TID generation |
12| [`@ewanc26/atproto`](./packages/atproto) | AT Protocol service layer |
13| [`@ewanc26/ui`](./packages/ui) | Svelte UI component library |
14| [`@ewanc26/utils`](./packages/utils) | Shared utility functions |
15| [`@ewanc26/noise`](./packages/noise) | Deterministic value-noise generation |
16| [`@ewanc26/noise-avatar`](./packages/noise-avatar) | Noise-based avatar generation |
17| [`@ewanc26/bismuth`](./packages/bismuth) | Convert `pub.leaflet` / `site.standard.document` records to Markdown |
18| [`@ewanc26/svelte-standard-site`](./packages/svelte-standard-site) | SvelteKit library for `site.standard.*` ATProto records |
19| [`@ewanc26/pds-landing`](./packages/pds-landing) | Svelte components for an ATProto PDS landing page |
20| [`@ewanc26/supporters`](./packages/supporters) | Ko-fi supporter display backed by ATProto |
21| [`@ewanc26/wafrn-theme`](./packages/wafrn-theme) | WAFRN CSS theme — Catppuccin terminal aesthetic |
22| [`@ewanc26/tangled-sync`](./packages/tangled-sync) | CLI for syncing GitHub repos to Tangled |
23| [`malachite`](./packages/malachite) | Last.fm/Spotify → ATProto scrobble importer (CLI) |
24| [`malachite-web`](./packages/malachite-web) | Last.fm/Spotify → ATProto scrobble importer (web frontend, private) |
25| [`nix-config-tools`](./packages/nix-config-tools) | Nix config management tools (Rust) |
26| [`llm-analyser`](./packages/llm-analyser) | `.docx` analysis with Ollama (Python) |
27
28## Licence
29
30AGPL-3.0-only (TypeScript/Svelte) · MIT (Rust)