Developer Guide

System Overview

How the Salmon applications, shared packages, and backend fit together.

Salmon is split across three repositories:

RepositoryResponsibility
salmon-wallet-frontendMobile app, browser extension, shared wallet logic, UI, and assets
salmon-wallet-backendPublic HTTP API, data-provider orchestration, caching, and network capability catalog
docsUser and contributor documentation

Runtime surfaces

The frontend produces two applications:

  • apps/mobile: React Native application built with Expo.
  • apps/extension: Chrome MV3 and Firefox extension built with WXT. It renders as a browser side panel.

The standalone web wallet is retired. Both active applications reuse business logic from packages/shared; the extension uses the DOM component library in packages/ui, while mobile owns its React Native components.

Request flow

For backend-backed data, the normal flow is:

screen → shared hook/context → API service → Salmon API → provider → resource response

Key creation and transaction signing stay in the client. The backend returns public data or unsigned transaction material; it does not receive the user's recovery phrase or private key.

Supported chains

  • Solana: active and the most developed integration.
  • Bitcoin: active for balances, history, UTXOs, and receiving. Sending is not available end to end in the current product.

The backend's /v1/networks response is the runtime source of truth for enabled networks and features.

Source versions reviewed

This documentation was rebuilt against frontend main and backend origin/main on September 4, 2026. Product behavior can move faster than these docs; when a conflict exists, tests and current source code win.

Copyright © 2026