# RingNet Dashboard Server A REST API and web dashboard for monitoring RingNet network topology, nodes, and connections in real-time. **🌐 Live Demo**: https://ringnet.cloud **📂 Repository**: https://git.manalejandro.com/ale/ringnet ## Features ### 🚀 REST API - **GET /api/nodes** - List all registered nodes - **GET /api/nodes/:nodeId** - Get specific node details - **GET /api/nodes/:nodeId/connections** - Get node connections - **GET /api/network/stats** - Network statistics - **GET /api/network/topology** - Ring topology data - **POST /api/nodes/register** - Register/update node status - **PUT /api/nodes/:nodeId** - Update node information ### 📊 Web Dashboard - Real-time network statistics - Interactive ring topology visualization - Node status monitoring - Connection health tracking - Auto-refresh every 5 seconds ## Quick Start ### 1. Start the Dashboard Server ```bash # From the ringnet root directory npm run start:dashboard # Or with development mode (auto-restart) npm run dashboard:dev # Or directly from server directory cd server npm start ``` The dashboard will be available at: **http://localhost:3000** ### 2. Start Nodes with Dashboard Reporting ```bash # Start Oracle node with dashboard reporting npm run start:oracle -- --port 8080 --dashboard http://localhost:3000 # Start regular nodes npm run start:node -- --port 8081 --bootstrap localhost:8080 --dashboard http://localhost:3000 npm run start:node -- --port 8082 --bootstrap localhost:8080 --dashboard http://localhost:3000 ``` ### 3. View the Dashboard Open your browser to **http://localhost:3000** to see: - Network statistics (total nodes, connections, oracle nodes) - Live list of active nodes - Interactive ring topology visualization - Real-time status updates ## API Examples ### Get Network Statistics ```bash curl http://localhost:3000/api/network/stats ``` ### Get All Nodes ```bash curl http://localhost:3000/api/nodes ``` ### Get Ring Topology ```bash curl http://localhost:3000/api/network/topology ``` ### Register a Node (used automatically by nodes) ```bash curl -X POST http://localhost:3000/api/nodes/register \ -H "Content-Type: application/json" \ -d '{ "nodeId": "abc123...", "port": 8080, "isOracle": true, "ringPosition": 0 }' ``` ## Configuration ### Environment Variables - `PORT` - Server port (default: 3000) ### Node Configuration Nodes automatically report to the dashboard when started with the `--dashboard` parameter: ```bash --dashboard http://localhost:3000 ``` ## Dashboard Features ### Network Statistics - **Total Nodes**: Number of active nodes in the network - **Oracle Nodes**: Number of Oracle nodes providing enhanced services - **Total Connections**: Sum of all peer connections - **Last Updated**: Timestamp of the most recent update ### Node List - Real-time status indicators (active/inactive) - Node type identification (Oracle vs Regular) - Ring position and port information - Last seen timestamps ### Ring Topology Visualization - Interactive circular visualization of the ring - Node positioning based on ring coordinates - Color-coded Oracle nodes (orange) vs regular nodes (blue) - Click nodes for detailed information - Visual representation of the double-ring structure ### Auto-Monitoring - Nodes automatically register and update their status - Inactive nodes are removed after 5 minutes of no updates - Real-time updates every 5 seconds - Graceful handling of network disconnections ## Dependencies - **express** - Web server framework - **cors** - Cross-origin resource sharing - **ws** - WebSocket support (for future real-time features) - **chalk** - Colored terminal output ## Development ### Running in Development Mode ```bash npm run dashboard:dev ``` ### API Testing The dashboard includes a health check endpoint: ```bash curl http://localhost:3000/health ``` ### Custom Styling Modify `public/index.html` to customize the dashboard appearance. The dashboard uses: - CSS Grid for responsive layout - CSS backdrop-filter for glassmorphism effects - Vanilla JavaScript for API interactions - SVG-based ring visualization ## Integration Nodes automatically report their status when the `--dashboard` parameter is provided. The reporting includes: - Node identification and type - Ring position and topology - Connection status and peer information - Network statistics and health data The dashboard is designed to be lightweight and can run alongside the ring network without affecting performance.