Real-time monitoring dashboard for Vortex's critical third-party service dependencies.
- RPC Endpoint Monitoring: Tracks availability for Pendulum and Moonbeam networks (including backup endpoints)
- Squid Router API: Monitors functionality through route requests
- Indexer Synchronization: Checks Pendulum indexer freshness
- Performance Metrics: Monitors average block times across networks
- Historical Data: View metrics across different time ranges (1 hour, 1 day, 7 days)
- Bun v1.3.1 or higher
This is a Bun monorepo with two workspaces:
backend/- TypeScript/Bun backend service for metrics collectionfrontend/- React/TypeScript frontend dashboard
From the root directory, install all dependencies for both backend and frontend:
bun install- Navigate to the backend directory:
cd backend- Configure environment variables:
Copy .env.example to .env and configure the required values:
cp .env.example .envRequired environment variables:
PORT: Server port (default: 3000)SUPABASE_URL: Supabase project URL (optional, for data persistence)SUPABASE_SERVICE_KEY: Supabase service key (optional, for data persistence)SUPABASE_BUCKET_NAME: Supabase storage bucket name (default: metrics-data)
- Navigate to the frontend directory:
cd frontend- Configure environment variables:
Copy .env.example to .env and configure:
cp .env.example .envSet VITE_API_URL to your backend URL (e.g., http://localhost:3000)
From the root directory:
bun run devThis will start both the backend and frontend in development mode with hot reload.
Backend only:
bun run dev:backendFrontend only:
bun run dev:frontendStart both services in production mode:
bun run startOr individually:
bun run start:backend
bun run start:frontendBuild both projects:
bun run buildOr individually:
bun run build:backend
bun run build:frontendGET /metrics- Returns current metrics dataGET /config- Returns configuration for time binsGET /health- Health check endpoint that returns server status
The dashboard consists of two main components:
-
Backend: TypeScript/Bun application that:
- Collects metrics from various sources every 30 seconds
- Aggregates data into short-term and long-term bins
- Persists data to Supabase (optional)
- Exposes metrics via REST API
-
Frontend: React/TypeScript application that:
- Fetches and displays metrics in real-time
- Provides interactive visualizations using Tremor components
- Allows users to switch between different time ranges
This project uses Bun as the JavaScript runtime and package manager. Bun provides fast installation, execution, and hot reload capabilities for both backend and frontend development.