# Welshman Docs

# Welshman

A nostr toolkit focused on creating highly a configurable client system, extracted from the Coracle nostr client.

This is a monorepo which is split into several different packages:

- @welshman/app - a framework for building nostr apps
- @welshman/content - utilities for parsing and rendering notes.
- @welshman/dvm - utilities for creating and making request against dvms.
- @welshman/feeds - an interpreter for custom nostr feeds.
- @welshman/lib - generic utility functions.
- @welshman/net - framework for interacting with relays.
- @welshman/signer - signers and utilities for signing/encryption/decryption
- @welshman/store - utilities for building svelte stores for welshman apps
- @welshman/util - various nostr-specific utilities.

# Linking

If you're developing an application which requires changes to welshman, you'll need to use `npm link` to link the two. This is an annoying process, and is only supported if using `npm`.

- Clone welshman and the repository that depends on it
- Within each `package` directory in welshman, run `npm link`
- Within your application directory, link all welshman dependencies simultaneously (or else only one will get linked. A command that does this is: `rm -rf node_modules; npm i; cat package.json|js '.depedencies|keys[]'|grep welshman|xargs npm link`.

If you run `npm install` in your application directory, you'll need to repeat the final step above.