Node Dashboard
The Node Dashboard is a comprehensive web interface for monitoring and interacting with your Mina Rust node. Built with Angular, it provides real-time insights into your node's operation and the broader network state.
Features
- Real-time node monitoring - View node status, blockchain state, and network activity
- Block explorer - Browse blocks, transactions, and accounts
- Network visualization - See peer connections and network topology
- SNARK worker monitoring - Track SNARK work production and verification
- Transaction pool viewer - Monitor pending transactions
- Performance metrics - Resource usage and performance dashboards
Prerequisites
Ensure you have Node.js and Angular CLI installed by following the Frontend Prerequisites guide.
Quick start
Installation
Navigate to the frontend directory and install dependencies:
cd frontend
make install-deps
Development server
Start the development server with hot-reload:
cd frontend
make start
This will:
- Install any missing dependencies
- Start the Angular development server
- Open the application in your browser at
http://localhost:4200
Build configurations
The frontend supports multiple build configurations for different environments:
# Local configuration (connects to local node)
make build-local
# Mobile-accessible development server
make start-dev-mobile
Production builds
For optimized production deployments:
cd frontend
make prebuild
make build-production
Production build with Sentry error tracking:
make build-production-sentry
Specialized configurations
# Block producer dashboard
make build-producer
# Fuzzing test interface
make build-fuzzing
# WebNode integration
make build-webnode
Configuration
Environment files
The frontend uses environment-specific configuration files located in
src/assets/environments/
:
fuzzing.js
- Fuzzing testslocal.js
- Local developmentproducer.js
- Block producer interfaceproduction.js
- Production deploymentwebnode.js
- WebNode integration
For the most current environment configuration files, see the frontend/src/assets/environments directory in the develop branch.
Development workflow
Code formatting
The project uses Prettier for consistent code formatting:
cd frontend
make prettify
Testing
Run the Cypress test suite:
cd frontend
make test-headless
For interactive testing:
# Interactive test runner
make test
Building for production
Create an optimized production build:
# Build with version update
make prebuild
make build-production
# Build with Sentry sourcemaps
make build-production-sentry
Serving production builds
Test production builds locally:
make build-production
make start-bundle
Docker deployment
The Node Dashboard can be deployed using Docker with environment-specific builds.
Environment configurations
The MINA_FRONTEND_ENVIRONMENT
variable determines how the frontend is built
and configured:
-
local
- Local development environment connecting to localhost:3085. Optimized for development with a local node instance. -
fuzzing
- Fuzzing test environment for stress testing. Development build with enhanced debugging for testing scenarios. -
production
- Production environment with full optimization. Connects to production network endpoints with minification and performance optimizations. -
producer
- Specialized configuration for block producers. Includes additional monitoring and producer-specific features. -
webnodelocal
- WebNode configuration for browser-based Mina node operation. Enables WASM integration and WebRTC networking for in-browser execution. -
leaderboard
- Leaderboard configuration for community participation tracking. Optimized for testnet participation metrics and rankings.
Build Docker image
# Generate .env.docker with current git information (required for WASM build)
frontend/docker/generate-docker-env.sh
# Build the Docker image (from project root)
docker build -t mina-frontend -f frontend/Dockerfile .
Run with Docker
# Run Node Dashboard with local configuration (connects to localhost:3085)
docker run -p 4200:80 -e MINA_FRONTEND_ENVIRONMENT=local mina-frontend
# Run Node Dashboard with production configuration (production endpoints)
docker run -p 4200:80 -e MINA_FRONTEND_ENVIRONMENT=production mina-frontend
# Run Node Dashboard with webnode configuration (browser-based node operation)
docker run -p 4200:80 -e MINA_FRONTEND_ENVIRONMENT=webnode mina-frontend
# Run Node Dashboard with producer configuration (block producer features)
docker run -p 4200:80 -e MINA_FRONTEND_ENVIRONMENT=producer mina-frontend
# Run Node Dashboard with fuzzing configuration (stress testing)
docker run -p 4200:80 -e MINA_FRONTEND_ENVIRONMENT=fuzzing mina-frontend
# Run Node Dashboard with leaderboard configuration (community tracking)
docker run -p 4200:80 -e MINA_FRONTEND_ENVIRONMENT=leaderboard mina-frontend
The Docker image builds the frontend at container startup based on the
MINA_FRONTEND_ENVIRONMENT
variable. This allows a single Docker image to serve
different configurations.
Project structure
frontend/
├── src/
│ ├── app/ # Angular application code
│ │ ├── core/ # Core services and utilities
│ │ ├── shared/ # Shared components and modules
│ │ ├── features/ # Feature modules
│ │ └── layout/ # Layout components
│ ├── assets/ # Static assets
│ │ └── environments/ # Environment configurations
│ ├── styles/ # Global styles
│ └── index.html # Main HTML template
├── cypress/ # E2E test specifications
├── scripts/ # Build and deployment scripts
├── Makefile # Build automation
├── angular.json # Angular CLI configuration
├── package.json # Node.js dependencies
└── tsconfig.json # TypeScript configuration
Features
Real-time updates
The frontend maintains WebSocket connections for real-time updates:
- Block production events
- Network peer changes
- Transaction pool updates
- SNARK work completion