A selfhosted management tool for yarn enthusiasts. Keep track of your inventory, match your collection with available recipes. Get an overview over the status of each yarn roll, is it allocated to a currently active project, is it used, or is it free to start that new exciting project you have been considering.
  • Go 48.1%
  • TypeScript 41.1%
  • CSS 10.4%
  • HTML 0.2%
  • JavaScript 0.1%
  • Other 0.1%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-19 21:59:06 +00:00
.forgejo/workflows chore: only run workflows on push to feature branches (#33) 2026-07-12 12:22:00 +00:00
backend fix: search by using explicit indexing ($%[1]d) so all three ILIKEs reuse the same parameter (#97) 2026-09-19 21:59:06 +00:00
docs fix: keep allocated yarn in storage until consumed (#82) 2026-07-26 13:23:46 +00:00
frontend feat: reorganize yarn handling and remove total from getList (#95) 2026-09-19 20:17:03 +00:00
.env.example feat: major rework to authentication/authorization (#44) 2026-07-15 19:36:49 +00:00
.gitignore fix: search by using explicit indexing ($%[1]d) so all three ILIKEs reuse the same parameter (#97) 2026-09-19 21:59:06 +00:00
docker-compose.override.yml feat: major rework to authentication/authorization (#44) 2026-07-15 19:36:49 +00:00
docker-compose.yml fix: broken docker compose file (#45) 2026-07-18 12:41:13 +00:00
LICENSE Initial commit 2026-06-28 10:14:53 +00:00
README.md feat: track individual skeins with lifecycle, consume without losing allocation, event log, soft-delete projects (#65) 2026-07-19 14:22:19 +00:00
review.md feat: improve ui design (#59) 2026-07-19 10:53:35 +00:00

yarnman

A selfhosted management tool for yarn enthusiasts. Keep track of your inventory, match your collection with available recipes. Get an overview over the status of each yarn skein: free, allocated to a project, or used.

Yarn lifecycle

Each physical skein is tracked individually:

  • free — in stash (optionally at a storage location)
  • allocated — reserved for a project (in progress)
  • used — marked consumed on a project; still owned; still counts toward recipe coverage

Consuming yarn marks progress without removing allocation coverage or destroying owned stock. History is recorded in an append-only event log (GET /api/v1/yarn/:id/events, GET /api/v1/projects/:id/events).

Projects are soft-deleted (archived): in-progress yarn returns to free; used yarn stays linked for history.

Upgrade (Docker Compose)

Schema migrations run automatically when the API container starts.

# 1. Backup
docker compose exec -T db pg_dump -U postgres yarnman > backup-$(date +%F).sql

# 2. Pull and restart
docker compose pull
docker compose up -d

# 3. Check logs if needed
docker compose logs api

No manual multi-step migration tools are required.