Developer Guide

Local Development

Set up, run, test, and build the Salmon frontend, backend, and documentation.

Keep the three repositories beside each other:

projects/
├── salmon-wallet-frontend/
├── salmon-wallet-backend/
└── salmon-docs/

Frontend

Requirements: Node.js ^20.19.0 or ^22.12.0, pnpm 9, and Corepack.

corepack enable
corepack prepare pnpm@9.0.0 --activate
pnpm install
pnpm dev

Useful targets:

pnpm extension:dev
pnpm mobile:start
pnpm mobile:ios
pnpm mobile:android

Copy the relevant .env.example for local development. Local application defaults target the sibling backend at http://127.0.0.1:3000/local.

Before a pull request:

pnpm format:check
pnpm turbo run typecheck lint test
pnpm check:i18n
pnpm check:parity

Backend

Copy .env.example to .env and configure the provider credentials needed by the routes you are testing. Local Solana functionality requires a valid RPC endpoint; it does not require Helius specifically. Keep RPC URLs, API keys, and tokens only in the ignored .env file and never commit them.

For Solana, TRITON_RPC_URL is the primary mainnet RPC setting. Despite its name, the backend accepts a complete compatible RPC URL here; TRITON_API_TOKEN is only needed when a Triton URL does not already contain its token. HELIUS_API_KEY enables the Helius fallback and enhanced API, but it is not required when the configured primary provider covers the functionality being tested.

VariableRequired whenPurpose
TRITON_RPC_URLTesting Solana mainnet through the primary pathMainnet RPC and DAS endpoint
TRITON_RPC_URL_DEVNETUsing a private devnet providerOptional devnet RPC; otherwise the public Solana devnet RPC is used for basic calls
TRITON_API_TOKENThe configured Triton URL does not already embed its tokenAppended to bare Triton URLs
HELIUS_API_KEYTesting Helius fallback or Helius-only enhanced functionalityFallback RPC, DAS, and enhanced transactions
REDIS_*Running routes that use cache or rate limitingLocal Redis connection

Start Redis with Docker Compose, then run the Serverless offline target as described in the backend README. By default, the API is available at http://127.0.0.1:3000/local; the frontend is already configured to use that URL during local development.

Verify the process and its dependencies separately:

curl http://127.0.0.1:3000/local/status
curl http://127.0.0.1:3000/local/health

/status identifies the running build. /health also checks dependencies, including Redis, and can return 500 while the HTTP process itself is running.

Core checks:

npm run lint:check
npm run format:check
npm run test:unit
npm run test:integration

Integration tests can depend on local Redis or external providers. The backend repository's docs/TESTING.md documents hermetic and Docker-based options.

Documentation

Use Node 20 or Node 22–25.

npm ci
npm run dev
npm run build

The preview runs at http://localhost:3000. The production build is emitted to .output.

Scope checks

Read the closest AGENTS.md before changing source. Frontend package and application folders have scoped rules; backend layers and chain slices do as well. Run the smallest relevant checks first, then the repository-wide gates before submission.

Copyright © 2026