Skip to content

Development

This section is for contributing to Orchard’s source code: running it from a clone, making changes, and testing them. It is separate from the Install guide, which is for operators running a released build against their own services.

Orchard is a monorepo with the client and server in their own directories:

PartLocationStack
Clientsrc/clientAngular, Angular Material
Serversrc/serverNestJS, GraphQL (Apollo)
Sharedsrc/sharedGraphQL types generated from the server schema

The server stores its data with TypeORM in an SQLite database.

  • Node.js v22 (the version pinned in .nvmrc), which includes npm.
  • git, to clone the repository.
  • Docker with the Compose plugin, for the end-to-end tests.
  • Bitcoin full node for the Oracle and end-to-end tests.
  • Bitcoin, Lightning, and Cashu Mint on regtest for local development. Polar is useful for setting up a regtest environment.
  • Ollama for the AI development and end-to-end tests.
  1. Fork cashubtc/orchard on GitHub, then clone your fork:

    Terminal window
    git clone https://github.com/<you>/orchard.git
    cd orchard
  2. Add the canonical repository as upstream so you can keep your fork in sync:

    Terminal window
    git remote add upstream https://github.com/cashubtc/orchard.git
  3. Create a branch for your change:

    Terminal window
    git checkout -b my-change
  4. Make your changes and run the tests and checks before pushing.

  5. Push to your fork and open a pull request against cashubtc/orchard:

    Terminal window
    git push -u origin my-change

Before starting new work, pull in the latest changes so your branch stays current:

Terminal window
git fetch upstream
git rebase upstream/master

New to the codebase? Running Locally walks through getting Orchard running from source.


Development Development

Last updated: