- Hardware wallet (Polkadot Vault) support
- Dynamic derivations and multishard operations
- Show wallet balances for any supported token (assets, ORML, balances)
- Token transfer for any supported token (assets, ORML, balances)
- Multisig account and transactions without passing callData off-chain
- Relay Chain staking
Product behaviour of individual features is documented in colocated spec READMEs, indexed in the Feature Map.
Minimum version of Node.js is v24.x.
Minimum version of pnpm is v11.x.
# Setup dev environment.
pnpm install# Start Electron and prebuild app in staging mode. You can also access app with browser.
pnpm preview# Start Electron app in dev mode. You can also access app with browser.
pnpm start# Start renderer without Electron (not recommended).
pnpm start:renderer# Run unit tests for renderer.
pnpm test# Run linter.
pnpm lint# Run typescript typechecker.
pnpm types# Build app in staging mode.
pnpm staging:sequence# Build app in production mode.
pnpm prod:sequenceBuild-time values are read from the shell or from a git-ignored .env at the repo root (see .env.example).
| Variable | Purpose |
|---|---|
WALLET_CONNECT_PROJECT_ID |
WalletConnect Cloud project id, baked into the renderer bundle. Create one at cloud.reown.com. When empty, WalletConnect / Nova Wallet pairing is hidden in development builds and staging/production builds fail with an error. |
The id ends up in the shipped bundle, so it is not a secret: CI reads it from the WALLET_CONNECT_PROJECT_ID
repository variable (Settings → Secrets and variables → Actions → Variables), which is also available to pull-request
runs. The docker-compose.yml system-test setup runs the development server without the id, so WalletConnect is hidden
there.
Development configuration uses:
chains_dev.jsonfile that contains testnets in order to debug and test new features- debug tools are enabled by default
- error handling is turned off in order to pay developer's attention to errors
Stage configuration uses:
chains.jsonfile for chains configuration- debug tools are enabled by default
- errors are handled in a smooth way in order not to interrupt the user
Production configuration uses:
chains.jsonfile for chains configuration- debug tools are disabled by default
- errors are handled in a smooth way in order not to interrupt the user
All the localisation files are stored in the /src/shared/i18n/locales folder.
ESlint checks if localisation files are well-formed and valid including:
- Valid json formatting
- Json files contain the same set of keys
- Each key contains the same amount of placeholders for all locales
- All
tsxfiles are translated
In some cases there is no need to translate the text, so ESlint ignore rules should be used.
<span className="font-bold">
{/* eslint-disable-next-line i18next/no-literal-string */}
{data?.asset.symbol} ({data?.asset.name})
</span>or
//eslint-disable-next-line i18next/no-literal-string
const qrCodePayload = `substrate:${address}:${wallet.accountId}`;Log files help to solve your problem. Logs are collected in the nova-spektr.log that is located in the folder:
- macOS
~/Library/Logs/nova-spektr/nova-spektr.log - Windows
%USERPROFILE%\AppData\Roaming\nova-spektr\logs\nova-spektr.log - Linux
~/.config/nova-spektr/logs/nova-spektr.log
Sharing logs when you're contacting the support will speed up the problem fix.
Contributing guide is described in the CONTRIBUTING.md
Check the official support channels:
- Wiki
- Telegram group
- GitHub issues
All issues are being tracked in the Nova Spektr Support project
Your feedback is welcome. Use GitHub issues for submitting the feedback. All feedback is being tracked in the Nova Spektr Feedback project
Nova Spektr - Polkadot, Kusama enterprise application is available under the Apache 2.0 license. See the LICENSE file for more info. © Novasama Technologies GmbH 2025