Verana Visualizer
This guide provides comprehensive instructions for deploying the Verana Visualizer application. The Verana Visualizer is a modern, interactive Next.js frontend for exploring the Verana decentralized trust layer, including Trust Registries, Credential Schemas, DIDs, and network analytics with real historical blockchain data.
In the official component overview the Visualizer is described as the dashboard that “turns Verana data into interactive ecosystem insights and health metrics.” It consumes both resolver and indexer APIs to graph trust deposit balances, issuance and verification volume, and slashing activity. The source lives at verana-labs/verana-visualizer; the sections below help you run it in dev, staging, or production.
Table of Contents
- Prerequisites
- Environment Configuration
- Local Development
- Production Deployment
- Configuration Reference
- Troubleshooting
Prerequisites
Before deploying the Verana Visualizer, ensure you have the following:
- Node.js: Version 18 or higher (Node 20 recommended)
- Package Manager: npm (comes with Node.js)
- Docker: Version 20.10 or higher (for containerized deployment)
- Kubernetes: Version 1.24 or higher (for Kubernetes deployment)
- Helm: Version 3.0 or higher (optional, for Helm chart deployment)
- Access: Network access to Verana chain RPC, REST, Indexer, and Resolver endpoints
Environment Configuration
The Verana Visualizer requires several environment variables to connect to the Verana blockchain network and display network data. All variables must be prefixed with NEXT_PUBLIC_ to be accessible in the browser.
Required Environment Variables
| Variable | Description | Example |
|---|---|---|
NEXT_PUBLIC_BASE_URL | Full URL where the application will be hosted | https://vis.testnet.verana.network |
NEXT_PUBLIC_API_ENDPOINT | REST API endpoint URL | https://api.testnet.verana.network |
NEXT_PUBLIC_RPC_ENDPOINT | RPC endpoint URL | https://rpc.testnet.verana.network |
NEXT_PUBLIC_IDX_ENDPOINT | Indexer endpoint URL | https://idx.testnet.verana.network |
NEXT_PUBLIC_RESOLVER_ENDPOINT | DID Resolver endpoint URL | https://resolver.testnet.verana.network |
NEXT_PUBLIC_CHAIN_ID | Verana chain identifier | vna-testnet-1 |
NEXT_PUBLIC_CHAIN_NAME | Human-readable chain name | Testnet |
NEXT_PUBLIC_APP_NAME | Application display name | Verana Visualizer |
NEXT_PUBLIC_APP_LOGO | Logo filename (must exist in public/ directory) | logo.svg |
Optional Environment Variables
| Variable | Description | Default |
|---|---|---|
NEXT_PUBLIC_GITHUB_TOKEN | GitHub API token for Developer Activity page | Not set (60 requests/hour limit) |
NEXT_PUBLIC_PORT | Port displayed/consumed by the frontend bundle | 3000 |
Note: Without a GitHub token, the Developer Activity page is limited to 60 requests per hour. With a token (requires
public_reposcope), you get 5,000 requests per hour. Create a token at GitHub Settings.
Server Runtime Variables
These variables are only read by the Next.js server process. They are not exposed to the browser bundle, so they do not use the NEXT_PUBLIC_ prefix.
| Variable | Description | Default |
|---|---|---|
PORT | Port used by next dev/next start | 3000 |
Use
PORT(ornext dev --port <value>) to change the port the Node.js server binds to.NEXT_PUBLIC_PORTis still useful for generating links or displaying the port inside the UI, but it does not affect the server listener.
Alternative Verana-Specific Variables
For compatibility with other Verana components, you can also use these variables (mapped in Kubernetes deployments):
| Variable | Description |
|---|---|
NEXT_PUBLIC_VERANA_CHAIN_ID | Verana chain identifier |
NEXT_PUBLIC_VERANA_CHAIN_NAME | Human-readable chain name |
NEXT_PUBLIC_VERANA_RPC_ENDPOINT | RPC endpoint URL |
NEXT_PUBLIC_VERANA_REST_ENDPOINT | REST API endpoint URL |
NEXT_PUBLIC_VERANA_REST_ENDPOINT_TRUST_DEPOSIT | Trust Deposit REST endpoint |
NEXT_PUBLIC_VERANA_REST_ENDPOINT_DID | DID REST endpoint |
NEXT_PUBLIC_VERANA_REST_ENDPOINT_TRUST_REGISTRY | Trust Registry REST endpoint |
NEXT_PUBLIC_VERANA_REST_ENDPOINT_CREDENTIAL_SCHEMA | Credential Schema REST endpoint |
Environment Examples
Testnet Configuration
NEXT_PUBLIC_BASE_URL=https://vis.testnet.verana.network
NEXT_PUBLIC_API_ENDPOINT=https://api.testnet.verana.network
NEXT_PUBLIC_RPC_ENDPOINT=https://rpc.testnet.verana.network
NEXT_PUBLIC_IDX_ENDPOINT=https://idx.testnet.verana.network
NEXT_PUBLIC_RESOLVER_ENDPOINT=https://resolver.testnet.verana.network
NEXT_PUBLIC_CHAIN_ID=vna-testnet-1
NEXT_PUBLIC_CHAIN_NAME=Testnet
NEXT_PUBLIC_APP_NAME=Verana Visualizer
NEXT_PUBLIC_APP_LOGO=logo.svg
Devnet Configuration
NEXT_PUBLIC_BASE_URL=http://localhost:3000
NEXT_PUBLIC_API_ENDPOINT=http://node1.devnet.verana.network:1317
NEXT_PUBLIC_RPC_ENDPOINT=http://node1.devnet.verana.network:26657
NEXT_PUBLIC_IDX_ENDPOINT=http://node1.devnet.verana.network:8080
NEXT_PUBLIC_RESOLVER_ENDPOINT=http://node1.devnet.verana.network:8081
NEXT_PUBLIC_CHAIN_ID=vna-devnet-1
NEXT_PUBLIC_CHAIN_NAME=Devnet
NEXT_PUBLIC_APP_NAME=Verana Visualizer
NEXT_PUBLIC_APP_LOGO=logo.svg
Local Development
1. Clone the Repository
git clone https://github.com/verana-labs/verana-visualizer.git
cd verana-visualizer
2. Install Dependencies
npm install
3. Configure Environment Variables
Create a .env.local file (loaded automatically by Next.js) in the root directory. The repository includes an env.example file with default values. Copy it to .env.local and customize it:
cp env.example .env.local
# Edit .env.local with your configuration (git ignores this file)
4. Run Development Server
Start the development server with hot module replacement:
npm run dev
The application will be available at http://localhost:3000 (or any port you supply via PORT/--port). If your UI needs to know the port (for example, to build a base URL), also set NEXT_PUBLIC_PORT=3003 in your .env.local.
To bind the dev server to a different port:
PORT=3003 npm run dev
# or
npm run dev --port 3003
Tip: The development server supports hot module replacement, so changes to your code will be reflected immediately in the browser.
5. Run Tests (Optional)
npm test # Run tests once
npm run test:watch # Run tests in watch mode