EthPillar is a modern web application that transforms Ethereum node management from complex terminal commands to intuitive clickable options. It helps users set up and manage their Ethereum nodes with confidence.
- User-friendly Interface: Modern dashboard for node management with real-time updates
- Real-time Monitoring: Track node status, performance, and logs through WebSockets
- Client Selection: Easy setup wizard for execution and consensus clients
- Security-focused: Built with security best practices
- Ethereum 2.0 Support: Compatible with the latest Ethereum protocols
- Component-Based Architecture: Modular, maintainable codebase with reusable components
- Framework: Next.js 14 with App Router
- Runtime: Bun
- Styling: Tailwind CSS and Shadcn/UI
- State Management: React hooks and context
- Real-time Updates: WebSockets with Socket.IO
- Component Structure: Organized by page in the components directory
First, install dependencies:
bun install
Then, run the development server:
bun dev
For the WebSocket server:
cd ethpillar-ws-server
bun install
bun dev
Open http://localhost:3000 with your browser to see the result.
├── src/
│ ├── app/ # App Router pages
│ ├── components/ # UI components organized by page
│ │ ├── landing/ # Components for the landing page
│ │ ├── auth/ # Authentication components
│ │ ├── dashboard/ # Dashboard page components
│ │ └── ui/ # Reusable UI components
│ ├── hooks/ # Custom React hooks
│ ├── lib/ # Utility functions and shared logic
│ └── styles/ # Global styles
├── ethpillar-ws-server/ # Dedicated WebSocket server
│ ├── src/ # Server source code
│ ├── .env.example # Example environment variables
│ └── README.md # WebSocket server documentation
The dashboard provides a comprehensive interface for managing your Ethereum node:
- Connection Management: View and manage your SSH connection
- Node Status Display: Real-time status of all Ethereum services
- Live Log Viewer: Stream logs from various services in real-time
- Service Controls: Start, stop, and restart services with a click
- Error Handling: Robust error handling and recovery options
To ensure real-time updates even on serverless deployments, we use a dedicated WebSocket server:
- Separate Server: Dedicated Node.js server for real-time communication
- Socket.IO: Reliable WebSocket connections with fallbacks
- Secure Authentication: SSH session token validation
- Real-time Logs: Stream service logs directly to the UI
- Status Updates: Live service status polling
For more details on the WebSocket implementation, see WEBSOCKET_IMPLEMENTATION.md.
bun run build
bun start
To learn more about the technologies used in this project:
Contributions are welcome! Please feel free to submit a Pull Request.
This project is open source and available under the MIT License.